
// Copyright (C) 2009-2011 Luca Piccioni
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program.  If not, see <http://www.gnu.org/licenses/>.

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Text;

#pragma warning disable 1572, 1573

namespace Derm.OpenGL {

	/// <summary>
	/// Implementation of the OpenGL specification 
	/// </summary>
	public unsafe partial class Gl : ProcLoader
	{

		/// <summary>
		/// Binding for glAccum function.
		/// </summary>
		/// <param name="op">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Accum(int op, float value) {
			if      (Delegates.pglAccum != null)
				Delegates.pglAccum(op, value);
			else
				throw new InvalidOperationException("binding point Accum cannot be found");
			LogProc("glAccum({0}, {1})", op, value);
		}

		/// <summary>
		/// Binding for glActiveShaderProgram function.
		/// </summary>
		/// <param name="pipeline">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ActiveShaderProgram(UInt32 pipeline, UInt32 program) {
			if      (Delegates.pglActiveShaderProgram != null)
				Delegates.pglActiveShaderProgram(pipeline, program);
			else
				throw new InvalidOperationException("binding point ActiveShaderProgram cannot be found");
			LogProc("glActiveShaderProgram({0}, {1})", pipeline, program);
		}

		/// <summary>
		/// Binding for glActiveTexture function.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void ActiveTexture(int texture) {
			if      (Delegates.pglActiveTexture != null)
				Delegates.pglActiveTexture(texture);
			else
				throw new InvalidOperationException("binding point ActiveTexture cannot be found");
			LogProc("glActiveTexture({0})", texture);
		}

		/// <summary>
		/// Binding for glAlphaFunc function.
		/// </summary>
		/// <param name="func">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="ref">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void AlphaFunc(int func, float @ref) {
			if      (Delegates.pglAlphaFunc != null)
				Delegates.pglAlphaFunc(func, @ref);
			else
				throw new InvalidOperationException("binding point AlphaFunc cannot be found");
			LogProc("glAlphaFunc({0}, {1})", func, @ref);
		}

		/// <summary>
		/// Binding for glAreTexturesResident function.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="textures">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// <param name="residences">
		/// A <see cref="T:System.Boolean*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		/// @deprecated
		public static bool AreTexturesResident(Int32 n, UInt32[] textures, [Out] bool[] residences) {
			bool retvalue;
			unsafe {
				fixed (UInt32* fp_textures = textures)
				fixed (bool* fp_residences = residences)
				{
					if      (Delegates.pglAreTexturesResident != null)
						retvalue = (Delegates.pglAreTexturesResident(n, fp_textures, fp_residences));
					else
						throw new InvalidOperationException("binding point AreTexturesResident cannot be found");
				}
			}
			LogProc("glAreTexturesResident({0}, {1}, {2}) = {3}", n, textures, residences, retvalue);
			return (retvalue);
		}

		/// <summary>
		/// Binding for glArrayElement function.
		/// </summary>
		/// <param name="i">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		/// @deprecated
		public static void ArrayElement(int i) {
			if      (Delegates.pglArrayElement != null)
				Delegates.pglArrayElement(i);
			else
				throw new InvalidOperationException("binding point ArrayElement cannot be found");
			LogProc("glArrayElement({0})", i);
		}

		/// <summary>
		/// Binding for glAttachShader function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="shader">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void AttachShader(UInt32 program, UInt32 shader) {
			if      (Delegates.pglAttachShader != null)
				Delegates.pglAttachShader(program, shader);
			else
				throw new InvalidOperationException("binding point AttachShader cannot be found");
			LogProc("glAttachShader({0}, {1})", program, shader);
		}

		/// <summary>
		/// Binding for glBegin function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Begin(int mode) {
			if      (Delegates.pglBegin != null)
				Delegates.pglBegin(mode);
			else
				throw new InvalidOperationException("binding point Begin cannot be found");
			LogProc("glBegin({0})", mode);
		}

		/// <summary>
		/// Binding for glBeginConditionalRender function.
		/// </summary>
		/// <param name="id">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void BeginConditionalRender(UInt32 id, int mode) {
			if      (Delegates.pglBeginConditionalRender != null)
				Delegates.pglBeginConditionalRender(id, mode);
			else
				throw new InvalidOperationException("binding point BeginConditionalRender cannot be found");
			LogProc("glBeginConditionalRender({0}, {1})", id, mode);
		}

		/// <summary>
		/// Binding for glBeginQuery function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="id">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.5
		public static void BeginQuery(int target, UInt32 id) {
			if      (Delegates.pglBeginQuery != null)
				Delegates.pglBeginQuery(target, id);
			else
				throw new InvalidOperationException("binding point BeginQuery cannot be found");
			LogProc("glBeginQuery({0}, {1})", target, id);
		}

		/// <summary>
		/// Binding for glBeginQueryIndexed function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="id">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void BeginQueryIndexed(int target, UInt32 index, UInt32 id) {
			if      (Delegates.pglBeginQueryIndexed != null)
				Delegates.pglBeginQueryIndexed(target, index, id);
			else
				throw new InvalidOperationException("binding point BeginQueryIndexed cannot be found");
			LogProc("glBeginQueryIndexed({0}, {1}, {2})", target, index, id);
		}

		/// <summary>
		/// Binding for glBeginTransformFeedback function.
		/// </summary>
		/// <param name="primitiveMode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void BeginTransformFeedback(int primitiveMode) {
			if      (Delegates.pglBeginTransformFeedback != null)
				Delegates.pglBeginTransformFeedback(primitiveMode);
			else
				throw new InvalidOperationException("binding point BeginTransformFeedback cannot be found");
			LogProc("glBeginTransformFeedback({0})", primitiveMode);
		}

		/// <summary>
		/// Binding for glBindAttribLocation function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="name">
		/// A <see cref="T:System.String"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void BindAttribLocation(UInt32 program, UInt32 index, string name) {
			if      (Delegates.pglBindAttribLocation != null)
				Delegates.pglBindAttribLocation(program, index, name);
			else
				throw new InvalidOperationException("binding point BindAttribLocation cannot be found");
			LogProc("glBindAttribLocation({0}, {1}, {2})", program, index, name);
		}

		/// <summary>
		/// Binding for glBindBuffer function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="buffer">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.5
		public static void BindBuffer(int target, UInt32 buffer) {
			if      (Delegates.pglBindBuffer != null)
				Delegates.pglBindBuffer(target, buffer);
			else
				throw new InvalidOperationException("binding point BindBuffer cannot be found");
			LogProc("glBindBuffer({0}, {1})", target, buffer);
		}

		/// <summary>
		/// Binding for glBindBufferBase function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="buffer">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void BindBufferBase(int target, UInt32 index, UInt32 buffer) {
			if      (Delegates.pglBindBufferBase != null)
				Delegates.pglBindBufferBase(target, index, buffer);
			else
				throw new InvalidOperationException("binding point BindBufferBase cannot be found");
			LogProc("glBindBufferBase({0}, {1}, {2})", target, index, buffer);
		}

		/// <summary>
		/// Binding for glBindBufferRange function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="buffer">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="offset">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// <param name="size">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void BindBufferRange(int target, UInt32 index, UInt32 buffer, IntPtr offset, UInt32 size) {
			if      (Delegates.pglBindBufferRange != null)
				Delegates.pglBindBufferRange(target, index, buffer, offset, size);
			else
				throw new InvalidOperationException("binding point BindBufferRange cannot be found");
			LogProc("glBindBufferRange({0}, {1}, {2}, {3}, {4})", target, index, buffer, offset, size);
		}

		/// <summary>
		/// Binding for glBindFragDataLocation function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="color">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="name">
		/// A <see cref="T:System.String"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void BindFragDataLocation(UInt32 program, UInt32 color, string name) {
			if      (Delegates.pglBindFragDataLocation != null)
				Delegates.pglBindFragDataLocation(program, color, name);
			else
				throw new InvalidOperationException("binding point BindFragDataLocation cannot be found");
			LogProc("glBindFragDataLocation({0}, {1}, {2})", program, color, name);
		}

		/// <summary>
		/// Binding for glBindFragDataLocationIndexed function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="colorNumber">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="name">
		/// A <see cref="T:System.String"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void BindFragDataLocationIndexed(UInt32 program, UInt32 colorNumber, UInt32 index, string name) {
			if      (Delegates.pglBindFragDataLocationIndexed != null)
				Delegates.pglBindFragDataLocationIndexed(program, colorNumber, index, name);
			else
				throw new InvalidOperationException("binding point BindFragDataLocationIndexed cannot be found");
			LogProc("glBindFragDataLocationIndexed({0}, {1}, {2}, {3})", program, colorNumber, index, name);
		}

		/// <summary>
		/// Binding for glBindFramebuffer function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="framebuffer">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void BindFramebuffer(int target, UInt32 framebuffer) {
			if      (Delegates.pglBindFramebuffer != null)
				Delegates.pglBindFramebuffer(target, framebuffer);
			else
				throw new InvalidOperationException("binding point BindFramebuffer cannot be found");
			LogProc("glBindFramebuffer({0}, {1})", target, framebuffer);
		}

		/// <summary>
		/// Binding for glBindImageTexture function.
		/// </summary>
		/// <param name="unit">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="layered">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="layer">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="access">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="format">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.2
		public static void BindImageTexture(UInt32 unit, UInt32 texture, int level, bool layered, int layer, int access, int format) {
			if      (Delegates.pglBindImageTexture != null)
				Delegates.pglBindImageTexture(unit, texture, level, layered, layer, access, format);
			else
				throw new InvalidOperationException("binding point BindImageTexture cannot be found");
			LogProc("glBindImageTexture({0}, {1}, {2}, {3}, {4}, {5}, {6})", unit, texture, level, layered, layer, access, format);
		}

		/// <summary>
		/// Binding for glBindProgramPipeline function.
		/// </summary>
		/// <param name="pipeline">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void BindProgramPipeline(UInt32 pipeline) {
			if      (Delegates.pglBindProgramPipeline != null)
				Delegates.pglBindProgramPipeline(pipeline);
			else
				throw new InvalidOperationException("binding point BindProgramPipeline cannot be found");
			LogProc("glBindProgramPipeline({0})", pipeline);
		}

		/// <summary>
		/// Binding for glBindRenderbuffer function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="renderbuffer">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void BindRenderbuffer(int target, UInt32 renderbuffer) {
			if      (Delegates.pglBindRenderbuffer != null)
				Delegates.pglBindRenderbuffer(target, renderbuffer);
			else
				throw new InvalidOperationException("binding point BindRenderbuffer cannot be found");
			LogProc("glBindRenderbuffer({0}, {1})", target, renderbuffer);
		}

		/// <summary>
		/// Binding for glBindSampler function.
		/// </summary>
		/// <param name="unit">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="sampler">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void BindSampler(UInt32 unit, UInt32 sampler) {
			if      (Delegates.pglBindSampler != null)
				Delegates.pglBindSampler(unit, sampler);
			else
				throw new InvalidOperationException("binding point BindSampler cannot be found");
			LogProc("glBindSampler({0}, {1})", unit, sampler);
		}

		/// <summary>
		/// Binding for glBindTexture function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void BindTexture(int target, UInt32 texture) {
			if      (Delegates.pglBindTexture != null)
				Delegates.pglBindTexture(target, texture);
			else
				throw new InvalidOperationException("binding point BindTexture cannot be found");
			LogProc("glBindTexture({0}, {1})", target, texture);
		}

		/// <summary>
		/// Binding for glBindTransformFeedback function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="id">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void BindTransformFeedback(int target, UInt32 id) {
			if      (Delegates.pglBindTransformFeedback != null)
				Delegates.pglBindTransformFeedback(target, id);
			else
				throw new InvalidOperationException("binding point BindTransformFeedback cannot be found");
			LogProc("glBindTransformFeedback({0}, {1})", target, id);
		}

		/// <summary>
		/// Binding for glBindVertexArray function.
		/// </summary>
		/// <param name="array">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void BindVertexArray(UInt32 array) {
			if      (Delegates.pglBindVertexArray != null)
				Delegates.pglBindVertexArray(array);
			else
				throw new InvalidOperationException("binding point BindVertexArray cannot be found");
			LogProc("glBindVertexArray({0})", array);
		}

		/// <summary>
		/// Binding for glBitmap function.
		/// </summary>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="xorig">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="yorig">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="xmove">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="ymove">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="bitmap">
		/// A <see cref="T:System.Byte*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Bitmap(Int32 width, Int32 height, float xorig, float yorig, float xmove, float ymove, byte[] bitmap) {
			unsafe {
				fixed (byte* fp_bitmap = bitmap)
				{
					if      (Delegates.pglBitmap != null)
						Delegates.pglBitmap(width, height, xorig, yorig, xmove, ymove, fp_bitmap);
					else
						throw new InvalidOperationException("binding point Bitmap cannot be found");
				}
			}
			LogProc("glBitmap({0}, {1}, {2}, {3}, {4}, {5}, {6})", width, height, xorig, yorig, xmove, ymove, bitmap);
		}

		/// <summary>
		/// Binding for glBlendColor function.
		/// </summary>
		/// <param name="red">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="green">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="blue">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="alpha">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void BlendColor(float red, float green, float blue, float alpha) {
			if      (Delegates.pglBlendColor != null)
				Delegates.pglBlendColor(red, green, blue, alpha);
			else
				throw new InvalidOperationException("binding point BlendColor cannot be found");
			LogProc("glBlendColor({0}, {1}, {2}, {3})", red, green, blue, alpha);
		}

		/// <summary>
		/// Binding for glBlendEquation function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void BlendEquation(int mode) {
			if      (Delegates.pglBlendEquation != null)
				Delegates.pglBlendEquation(mode);
			else
				throw new InvalidOperationException("binding point BlendEquation cannot be found");
			LogProc("glBlendEquation({0})", mode);
		}

		/// <summary>
		/// Binding for glBlendEquationi function.
		/// </summary>
		/// <param name="buf">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void BlendEquation(UInt32 buf, int mode) {
			if      (Delegates.pglBlendEquationi != null)
				Delegates.pglBlendEquationi(buf, mode);
			else
				throw new InvalidOperationException("binding point BlendEquation cannot be found");
			LogProc("glBlendEquationi({0}, {1})", buf, mode);
		}

		/// <summary>
		/// Binding for glBlendEquationSeparate function.
		/// </summary>
		/// <param name="modeRGB">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="modeAlpha">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void BlendEquationSeparate(int modeRGB, int modeAlpha) {
			if      (Delegates.pglBlendEquationSeparate != null)
				Delegates.pglBlendEquationSeparate(modeRGB, modeAlpha);
			else
				throw new InvalidOperationException("binding point BlendEquationSeparate cannot be found");
			LogProc("glBlendEquationSeparate({0}, {1})", modeRGB, modeAlpha);
		}

		/// <summary>
		/// Binding for glBlendEquationSeparatei function.
		/// </summary>
		/// <param name="buf">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="modeRGB">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="modeAlpha">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void BlendEquationSeparate(UInt32 buf, int modeRGB, int modeAlpha) {
			if      (Delegates.pglBlendEquationSeparatei != null)
				Delegates.pglBlendEquationSeparatei(buf, modeRGB, modeAlpha);
			else
				throw new InvalidOperationException("binding point BlendEquationSeparate cannot be found");
			LogProc("glBlendEquationSeparatei({0}, {1}, {2})", buf, modeRGB, modeAlpha);
		}

		/// <summary>
		/// Binding for glBlendFunc function.
		/// </summary>
		/// <param name="sfactor">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="dfactor">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void BlendFunc(int sfactor, int dfactor) {
			if      (Delegates.pglBlendFunc != null)
				Delegates.pglBlendFunc(sfactor, dfactor);
			else
				throw new InvalidOperationException("binding point BlendFunc cannot be found");
			LogProc("glBlendFunc({0}, {1})", sfactor, dfactor);
		}

		/// <summary>
		/// Binding for glBlendFunci function.
		/// </summary>
		/// <param name="buf">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="src">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="dst">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void BlendFunc(UInt32 buf, int src, int dst) {
			if      (Delegates.pglBlendFunci != null)
				Delegates.pglBlendFunci(buf, src, dst);
			else
				throw new InvalidOperationException("binding point BlendFunc cannot be found");
			LogProc("glBlendFunci({0}, {1}, {2})", buf, src, dst);
		}

		/// <summary>
		/// Binding for glBlendFuncSeparate function.
		/// </summary>
		/// <param name="sfactorRGB">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="dfactorRGB">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="sfactorAlpha">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="dfactorAlpha">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.4
		public static void BlendFuncSeparate(int sfactorRGB, int dfactorRGB, int sfactorAlpha, int dfactorAlpha) {
			if      (Delegates.pglBlendFuncSeparate != null)
				Delegates.pglBlendFuncSeparate(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha);
			else
				throw new InvalidOperationException("binding point BlendFuncSeparate cannot be found");
			LogProc("glBlendFuncSeparate({0}, {1}, {2}, {3})", sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha);
		}

		/// <summary>
		/// Binding for glBlendFuncSeparatei function.
		/// </summary>
		/// <param name="buf">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="srcRGB">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="dstRGB">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="srcAlpha">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="dstAlpha">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void BlendFuncSeparate(UInt32 buf, int srcRGB, int dstRGB, int srcAlpha, int dstAlpha) {
			if      (Delegates.pglBlendFuncSeparatei != null)
				Delegates.pglBlendFuncSeparatei(buf, srcRGB, dstRGB, srcAlpha, dstAlpha);
			else
				throw new InvalidOperationException("binding point BlendFuncSeparate cannot be found");
			LogProc("glBlendFuncSeparatei({0}, {1}, {2}, {3}, {4})", buf, srcRGB, dstRGB, srcAlpha, dstAlpha);
		}

		/// <summary>
		/// Binding for glBlitFramebuffer function.
		/// </summary>
		/// <param name="srcX0">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="srcY0">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="srcX1">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="srcY1">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="dstX0">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="dstY0">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="dstX1">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="dstY1">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="mask">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="filter">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void BlitFramebuffer(int srcX0, int srcY0, int srcX1, int srcY1, int dstX0, int dstY0, int dstX1, int dstY1, uint mask, int filter) {
			if      (Delegates.pglBlitFramebuffer != null)
				Delegates.pglBlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
			else
				throw new InvalidOperationException("binding point BlitFramebuffer cannot be found");
			LogProc("glBlitFramebuffer({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9})", srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
		}

		/// <summary>
		/// Binding for glBufferData function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="size">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="data">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// <param name="usage">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.5
		public static void BufferData(int target, UInt32 size, object data, int usage) {
			GCHandle pp_data = GCHandle.Alloc(data, GCHandleType.Pinned);
			try {
				if      (Delegates.pglBufferData != null)
					Delegates.pglBufferData(target, size, pp_data.AddrOfPinnedObject(), usage);
				else
					throw new InvalidOperationException("binding point BufferData cannot be found");
			} finally {
				pp_data.Free();
			}
			LogProc("glBufferData({0}, {1}, {2}, {3})", target, size, data, usage);
		}

		/// <summary>
		/// Binding for glBufferData function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="size">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="data">
		/// A <see cref="T:System.Void"/>.
		/// </param>
		/// <param name="usage">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.5
		public static void BufferData(int target, UInt32 size, IntPtr data, int usage) {
			unsafe {
				if      (Delegates.pglBufferData != null)
					Delegates.pglBufferData(target, size, new IntPtr((long)data), usage);
				else
					throw new InvalidOperationException("binding point BufferData cannot be found");
			}
			LogProc("glBufferData({0}, {1}, {2}, {3})", target, size, "data", usage);
		}
		

		/// <summary>
		/// Binding for glBufferSubData function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="offset">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// <param name="size">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="data">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.5
		public static void BufferSubData(int target, IntPtr offset, UInt32 size, object data) {
			GCHandle pp_data = GCHandle.Alloc(data, GCHandleType.Pinned);
			try {
				if      (Delegates.pglBufferSubData != null)
					Delegates.pglBufferSubData(target, offset, size, pp_data.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point BufferSubData cannot be found");
			} finally {
				pp_data.Free();
			}
			LogProc("glBufferSubData({0}, {1}, {2}, {3})", target, offset, size, data);
		}

		/// <summary>
		/// Binding for glBufferSubData function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="offset">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// <param name="size">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="data">
		/// A <see cref="T:System.Void"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.5
		public static void BufferSubData(int target, IntPtr offset, UInt32 size, IntPtr data) {
			unsafe {
				if      (Delegates.pglBufferSubData != null)
					Delegates.pglBufferSubData(target, offset, size, new IntPtr((long)data));
				else
					throw new InvalidOperationException("binding point BufferSubData cannot be found");
			}
			LogProc("glBufferSubData({0}, {1}, {2}, {3})", target, offset, size, "data");
		}
		

		/// <summary>
		/// Binding for glCallList function.
		/// </summary>
		/// <param name="list">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void CallList(UInt32 list) {
			if      (Delegates.pglCallList != null)
				Delegates.pglCallList(list);
			else
				throw new InvalidOperationException("binding point CallList cannot be found");
			LogProc("glCallList({0})", list);
		}

		/// <summary>
		/// Binding for glCallLists function.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="lists">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void CallLists(Int32 n, int type, object lists) {
			GCHandle pp_lists = GCHandle.Alloc(lists, GCHandleType.Pinned);
			try {
				if      (Delegates.pglCallLists != null)
					Delegates.pglCallLists(n, type, pp_lists.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point CallLists cannot be found");
			} finally {
				pp_lists.Free();
			}
			LogProc("glCallLists({0}, {1}, {2})", n, type, lists);
		}

		/// <summary>
		/// Binding for glCheckFramebufferStatus function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static int CheckFramebufferStatus(int target) {
			int retvalue;
			if      (Delegates.pglCheckFramebufferStatus != null)
				retvalue = (Delegates.pglCheckFramebufferStatus(target));
			else
				throw new InvalidOperationException("binding point CheckFramebufferStatus cannot be found");
			LogProc("glCheckFramebufferStatus({0}) = {1}", target, retvalue);
			return (retvalue);
		}

		/// <summary>
		/// Binding for glClampColor function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="clamp">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void ClampColor(int target, int clamp) {
			if      (Delegates.pglClampColor != null)
				Delegates.pglClampColor(target, clamp);
			else
				throw new InvalidOperationException("binding point ClampColor cannot be found");
			LogProc("glClampColor({0}, {1})", target, clamp);
		}

		/// <summary>
		/// Binding for glClear function.
		/// </summary>
		/// <param name="mask">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void Clear(uint mask) {
			if      (Delegates.pglClear != null)
				Delegates.pglClear(mask);
			else
				throw new InvalidOperationException("binding point Clear cannot be found");
			LogProc("glClear({0})", mask);
		}

		/// <summary>
		/// Binding for glClearAccum function.
		/// </summary>
		/// <param name="red">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="green">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="blue">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="alpha">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void ClearAccum(float red, float green, float blue, float alpha) {
			if      (Delegates.pglClearAccum != null)
				Delegates.pglClearAccum(red, green, blue, alpha);
			else
				throw new InvalidOperationException("binding point ClearAccum cannot be found");
			LogProc("glClearAccum({0}, {1}, {2}, {3})", red, green, blue, alpha);
		}

		/// <summary>
		/// Binding for glClearBufferfi function.
		/// </summary>
		/// <param name="buffer">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="drawbuffer">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="depth">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="stencil">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void ClearBufferfi(int buffer, int drawbuffer, float depth, int stencil) {
			if      (Delegates.pglClearBufferfi != null)
				Delegates.pglClearBufferfi(buffer, drawbuffer, depth, stencil);
			else
				throw new InvalidOperationException("binding point ClearBufferfi cannot be found");
			LogProc("glClearBufferfi({0}, {1}, {2}, {3})", buffer, drawbuffer, depth, stencil);
		}

		/// <summary>
		/// Binding for glClearBufferfv function.
		/// </summary>
		/// <param name="buffer">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="drawbuffer">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void ClearBuffer(int buffer, int drawbuffer, float[] value) {
			unsafe {
				fixed (float* fp_value = value)
				{
					if      (Delegates.pglClearBufferfv != null)
						Delegates.pglClearBufferfv(buffer, drawbuffer, fp_value);
					else
						throw new InvalidOperationException("binding point ClearBuffer cannot be found");
				}
			}
			LogProc("glClearBufferfv({0}, {1}, {2})", buffer, drawbuffer, value);
		}

		/// <summary>
		/// Binding for glClearBufferfv function.
		/// </summary>
		/// <param name="buffer">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="drawbuffer">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void ClearBuffer(int buffer, int drawbuffer, float* value) {
			unsafe {
				if      (Delegates.pglClearBufferfv != null)
					Delegates.pglClearBufferfv(buffer, drawbuffer, value);
				else
					throw new InvalidOperationException("binding point ClearBuffer cannot be found");
			}
			LogProc("glClearBufferfv({0}, {1}, {2})", buffer, drawbuffer, "value");
		}
		

		/// <summary>
		/// Binding for glClearBufferiv function.
		/// </summary>
		/// <param name="buffer">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="drawbuffer">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void ClearBuffer(int buffer, int drawbuffer, int[] value) {
			unsafe {
				fixed (int* fp_value = value)
				{
					if      (Delegates.pglClearBufferiv != null)
						Delegates.pglClearBufferiv(buffer, drawbuffer, fp_value);
					else
						throw new InvalidOperationException("binding point ClearBuffer cannot be found");
				}
			}
			LogProc("glClearBufferiv({0}, {1}, {2})", buffer, drawbuffer, value);
		}

		/// <summary>
		/// Binding for glClearBufferiv function.
		/// </summary>
		/// <param name="buffer">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="drawbuffer">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void ClearBuffer(int buffer, int drawbuffer, int* value) {
			unsafe {
				if      (Delegates.pglClearBufferiv != null)
					Delegates.pglClearBufferiv(buffer, drawbuffer, value);
				else
					throw new InvalidOperationException("binding point ClearBuffer cannot be found");
			}
			LogProc("glClearBufferiv({0}, {1}, {2})", buffer, drawbuffer, "value");
		}
		

		/// <summary>
		/// Binding for glClearBufferuiv function.
		/// </summary>
		/// <param name="buffer">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="drawbuffer">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void ClearBuffer(int buffer, int drawbuffer, UInt32[] value) {
			unsafe {
				fixed (UInt32* fp_value = value)
				{
					if      (Delegates.pglClearBufferuiv != null)
						Delegates.pglClearBufferuiv(buffer, drawbuffer, fp_value);
					else
						throw new InvalidOperationException("binding point ClearBuffer cannot be found");
				}
			}
			LogProc("glClearBufferuiv({0}, {1}, {2})", buffer, drawbuffer, value);
		}

		/// <summary>
		/// Binding for glClearBufferuiv function.
		/// </summary>
		/// <param name="buffer">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="drawbuffer">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void ClearBuffer(int buffer, int drawbuffer, UInt32* value) {
			unsafe {
				if      (Delegates.pglClearBufferuiv != null)
					Delegates.pglClearBufferuiv(buffer, drawbuffer, value);
				else
					throw new InvalidOperationException("binding point ClearBuffer cannot be found");
			}
			LogProc("glClearBufferuiv({0}, {1}, {2})", buffer, drawbuffer, "value");
		}
		

		/// <summary>
		/// Binding for glClearColor function.
		/// </summary>
		/// <param name="red">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="green">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="blue">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="alpha">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void ClearColor(float red, float green, float blue, float alpha) {
			if      (Delegates.pglClearColor != null)
				Delegates.pglClearColor(red, green, blue, alpha);
			else
				throw new InvalidOperationException("binding point ClearColor cannot be found");
			LogProc("glClearColor({0}, {1}, {2}, {3})", red, green, blue, alpha);
		}

		/// <summary>
		/// Binding for glClearDepth function.
		/// </summary>
		/// <param name="depth">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void ClearDepth(double depth) {
			if      (Delegates.pglClearDepth != null)
				Delegates.pglClearDepth(depth);
			else
				throw new InvalidOperationException("binding point ClearDepth cannot be found");
			LogProc("glClearDepth({0})", depth);
		}

		/// <summary>
		/// Binding for glClearDepthf function.
		/// </summary>
		/// <param name="d">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ClearDepth(float d) {
			if      (Delegates.pglClearDepthf != null)
				Delegates.pglClearDepthf(d);
			else
				throw new InvalidOperationException("binding point ClearDepth cannot be found");
			LogProc("glClearDepthf({0})", d);
		}

		/// <summary>
		/// Binding for glClearIndex function.
		/// </summary>
		/// <param name="c">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void ClearIndex(float c) {
			if      (Delegates.pglClearIndex != null)
				Delegates.pglClearIndex(c);
			else
				throw new InvalidOperationException("binding point ClearIndex cannot be found");
			LogProc("glClearIndex({0})", c);
		}

		/// <summary>
		/// Binding for glClearStencil function.
		/// </summary>
		/// <param name="s">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void ClearStencil(int s) {
			if      (Delegates.pglClearStencil != null)
				Delegates.pglClearStencil(s);
			else
				throw new InvalidOperationException("binding point ClearStencil cannot be found");
			LogProc("glClearStencil({0})", s);
		}

		/// <summary>
		/// Binding for glClientActiveTexture function.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		/// @deprecated
		public static void ClientActiveTexture(int texture) {
			if      (Delegates.pglClientActiveTexture != null)
				Delegates.pglClientActiveTexture(texture);
			else
				throw new InvalidOperationException("binding point ClientActiveTexture cannot be found");
			LogProc("glClientActiveTexture({0})", texture);
		}

		/// <summary>
		/// Binding for glClientWaitSync function.
		/// </summary>
		/// <param name="sync">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="flags">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="timeout">
		/// A <see cref="T:System.UInt64"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static int ClientWaitSync(int sync, uint flags, UInt64 timeout) {
			int retvalue;
			if      (Delegates.pglClientWaitSync != null)
				retvalue = (Delegates.pglClientWaitSync(sync, flags, timeout));
			else
				throw new InvalidOperationException("binding point ClientWaitSync cannot be found");
			LogProc("glClientWaitSync({0}, {1}, {2}) = {3}", sync, flags, timeout, retvalue);
			return (retvalue);
		}

		/// <summary>
		/// Binding for glClipPlane function.
		/// </summary>
		/// <param name="plane">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="equation">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void ClipPlane(int plane, double[] equation) {
			unsafe {
				fixed (double* fp_equation = equation)
				{
					if      (Delegates.pglClipPlane != null)
						Delegates.pglClipPlane(plane, fp_equation);
					else
						throw new InvalidOperationException("binding point ClipPlane cannot be found");
				}
			}
			LogProc("glClipPlane({0}, {1})", plane, equation);
		}

		/// <summary>
		/// Binding for glClipPlane function.
		/// </summary>
		/// <param name="plane">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="equation">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void ClipPlane(int plane, double* equation) {
			unsafe {
				if      (Delegates.pglClipPlane != null)
					Delegates.pglClipPlane(plane, equation);
				else
					throw new InvalidOperationException("binding point ClipPlane cannot be found");
			}
			LogProc("glClipPlane({0}, {1})", plane, "equation");
		}
		

		/// <summary>
		/// Binding for glColor3b function.
		/// </summary>
		/// <param name="red">
		/// A <see cref="T:System.SByte"/>.
		/// </param>
		/// <param name="green">
		/// A <see cref="T:System.SByte"/>.
		/// </param>
		/// <param name="blue">
		/// A <see cref="T:System.SByte"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Color3(sbyte red, sbyte green, sbyte blue) {
			if      (Delegates.pglColor3b != null)
				Delegates.pglColor3b(red, green, blue);
			else
				throw new InvalidOperationException("binding point Color3 cannot be found");
			LogProc("glColor3b({0}, {1}, {2})", red, green, blue);
		}

		/// <summary>
		/// Binding for glColor3bv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.SByte*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Color3(sbyte[] v) {
			unsafe {
				fixed (sbyte* fp_v = v)
				{
					if      (Delegates.pglColor3bv != null)
						Delegates.pglColor3bv(fp_v);
					else
						throw new InvalidOperationException("binding point Color3 cannot be found");
				}
			}
			LogProc("glColor3bv({0})", v);
		}

		/// <summary>
		/// Binding for glColor3d function.
		/// </summary>
		/// <param name="red">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="green">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="blue">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Color3(double red, double green, double blue) {
			if      (Delegates.pglColor3d != null)
				Delegates.pglColor3d(red, green, blue);
			else
				throw new InvalidOperationException("binding point Color3 cannot be found");
			LogProc("glColor3d({0}, {1}, {2})", red, green, blue);
		}

		/// <summary>
		/// Binding for glColor3dv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Color3(double[] v) {
			unsafe {
				fixed (double* fp_v = v)
				{
					if      (Delegates.pglColor3dv != null)
						Delegates.pglColor3dv(fp_v);
					else
						throw new InvalidOperationException("binding point Color3 cannot be found");
				}
			}
			LogProc("glColor3dv({0})", v);
		}

		/// <summary>
		/// Binding for glColor3f function.
		/// </summary>
		/// <param name="red">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="green">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="blue">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Color3(float red, float green, float blue) {
			if      (Delegates.pglColor3f != null)
				Delegates.pglColor3f(red, green, blue);
			else
				throw new InvalidOperationException("binding point Color3 cannot be found");
			LogProc("glColor3f({0}, {1}, {2})", red, green, blue);
		}

		/// <summary>
		/// Binding for glColor3fv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Color3(float[] v) {
			unsafe {
				fixed (float* fp_v = v)
				{
					if      (Delegates.pglColor3fv != null)
						Delegates.pglColor3fv(fp_v);
					else
						throw new InvalidOperationException("binding point Color3 cannot be found");
				}
			}
			LogProc("glColor3fv({0})", v);
		}

		/// <summary>
		/// Binding for glColor3i function.
		/// </summary>
		/// <param name="red">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="green">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="blue">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Color3(int red, int green, int blue) {
			if      (Delegates.pglColor3i != null)
				Delegates.pglColor3i(red, green, blue);
			else
				throw new InvalidOperationException("binding point Color3 cannot be found");
			LogProc("glColor3i({0}, {1}, {2})", red, green, blue);
		}

		/// <summary>
		/// Binding for glColor3iv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Color3(int[] v) {
			unsafe {
				fixed (int* fp_v = v)
				{
					if      (Delegates.pglColor3iv != null)
						Delegates.pglColor3iv(fp_v);
					else
						throw new InvalidOperationException("binding point Color3 cannot be found");
				}
			}
			LogProc("glColor3iv({0})", v);
		}

		/// <summary>
		/// Binding for glColor3s function.
		/// </summary>
		/// <param name="red">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// <param name="green">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// <param name="blue">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Color3(Int16 red, Int16 green, Int16 blue) {
			if      (Delegates.pglColor3s != null)
				Delegates.pglColor3s(red, green, blue);
			else
				throw new InvalidOperationException("binding point Color3 cannot be found");
			LogProc("glColor3s({0}, {1}, {2})", red, green, blue);
		}

		/// <summary>
		/// Binding for glColor3sv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Int16*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Color3(Int16[] v) {
			unsafe {
				fixed (Int16* fp_v = v)
				{
					if      (Delegates.pglColor3sv != null)
						Delegates.pglColor3sv(fp_v);
					else
						throw new InvalidOperationException("binding point Color3 cannot be found");
				}
			}
			LogProc("glColor3sv({0})", v);
		}

		/// <summary>
		/// Binding for glColor3ub function.
		/// </summary>
		/// <param name="red">
		/// A <see cref="T:System.Byte"/>.
		/// </param>
		/// <param name="green">
		/// A <see cref="T:System.Byte"/>.
		/// </param>
		/// <param name="blue">
		/// A <see cref="T:System.Byte"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Color3(byte red, byte green, byte blue) {
			if      (Delegates.pglColor3ub != null)
				Delegates.pglColor3ub(red, green, blue);
			else
				throw new InvalidOperationException("binding point Color3 cannot be found");
			LogProc("glColor3ub({0}, {1}, {2})", red, green, blue);
		}

		/// <summary>
		/// Binding for glColor3ubv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Byte*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Color3(byte[] v) {
			unsafe {
				fixed (byte* fp_v = v)
				{
					if      (Delegates.pglColor3ubv != null)
						Delegates.pglColor3ubv(fp_v);
					else
						throw new InvalidOperationException("binding point Color3 cannot be found");
				}
			}
			LogProc("glColor3ubv({0})", v);
		}

		/// <summary>
		/// Binding for glColor3ui function.
		/// </summary>
		/// <param name="red">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="green">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="blue">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Color3(UInt32 red, UInt32 green, UInt32 blue) {
			if      (Delegates.pglColor3ui != null)
				Delegates.pglColor3ui(red, green, blue);
			else
				throw new InvalidOperationException("binding point Color3 cannot be found");
			LogProc("glColor3ui({0}, {1}, {2})", red, green, blue);
		}

		/// <summary>
		/// Binding for glColor3uiv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Color3(UInt32[] v) {
			unsafe {
				fixed (UInt32* fp_v = v)
				{
					if      (Delegates.pglColor3uiv != null)
						Delegates.pglColor3uiv(fp_v);
					else
						throw new InvalidOperationException("binding point Color3 cannot be found");
				}
			}
			LogProc("glColor3uiv({0})", v);
		}

		/// <summary>
		/// Binding for glColor3us function.
		/// </summary>
		/// <param name="red">
		/// A <see cref="T:System.UInt16"/>.
		/// </param>
		/// <param name="green">
		/// A <see cref="T:System.UInt16"/>.
		/// </param>
		/// <param name="blue">
		/// A <see cref="T:System.UInt16"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Color3(UInt16 red, UInt16 green, UInt16 blue) {
			if      (Delegates.pglColor3us != null)
				Delegates.pglColor3us(red, green, blue);
			else
				throw new InvalidOperationException("binding point Color3 cannot be found");
			LogProc("glColor3us({0}, {1}, {2})", red, green, blue);
		}

		/// <summary>
		/// Binding for glColor3usv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.UInt16*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Color3(UInt16[] v) {
			unsafe {
				fixed (UInt16* fp_v = v)
				{
					if      (Delegates.pglColor3usv != null)
						Delegates.pglColor3usv(fp_v);
					else
						throw new InvalidOperationException("binding point Color3 cannot be found");
				}
			}
			LogProc("glColor3usv({0})", v);
		}

		/// <summary>
		/// Binding for glColor4b function.
		/// </summary>
		/// <param name="red">
		/// A <see cref="T:System.SByte"/>.
		/// </param>
		/// <param name="green">
		/// A <see cref="T:System.SByte"/>.
		/// </param>
		/// <param name="blue">
		/// A <see cref="T:System.SByte"/>.
		/// </param>
		/// <param name="alpha">
		/// A <see cref="T:System.SByte"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Color4(sbyte red, sbyte green, sbyte blue, sbyte alpha) {
			if      (Delegates.pglColor4b != null)
				Delegates.pglColor4b(red, green, blue, alpha);
			else
				throw new InvalidOperationException("binding point Color4 cannot be found");
			LogProc("glColor4b({0}, {1}, {2}, {3})", red, green, blue, alpha);
		}

		/// <summary>
		/// Binding for glColor4bv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.SByte*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Color4(sbyte[] v) {
			unsafe {
				fixed (sbyte* fp_v = v)
				{
					if      (Delegates.pglColor4bv != null)
						Delegates.pglColor4bv(fp_v);
					else
						throw new InvalidOperationException("binding point Color4 cannot be found");
				}
			}
			LogProc("glColor4bv({0})", v);
		}

		/// <summary>
		/// Binding for glColor4d function.
		/// </summary>
		/// <param name="red">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="green">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="blue">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="alpha">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Color4(double red, double green, double blue, double alpha) {
			if      (Delegates.pglColor4d != null)
				Delegates.pglColor4d(red, green, blue, alpha);
			else
				throw new InvalidOperationException("binding point Color4 cannot be found");
			LogProc("glColor4d({0}, {1}, {2}, {3})", red, green, blue, alpha);
		}

		/// <summary>
		/// Binding for glColor4dv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Color4(double[] v) {
			unsafe {
				fixed (double* fp_v = v)
				{
					if      (Delegates.pglColor4dv != null)
						Delegates.pglColor4dv(fp_v);
					else
						throw new InvalidOperationException("binding point Color4 cannot be found");
				}
			}
			LogProc("glColor4dv({0})", v);
		}

		/// <summary>
		/// Binding for glColor4f function.
		/// </summary>
		/// <param name="red">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="green">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="blue">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="alpha">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Color4(float red, float green, float blue, float alpha) {
			if      (Delegates.pglColor4f != null)
				Delegates.pglColor4f(red, green, blue, alpha);
			else
				throw new InvalidOperationException("binding point Color4 cannot be found");
			LogProc("glColor4f({0}, {1}, {2}, {3})", red, green, blue, alpha);
		}

		/// <summary>
		/// Binding for glColor4fv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Color4(float[] v) {
			unsafe {
				fixed (float* fp_v = v)
				{
					if      (Delegates.pglColor4fv != null)
						Delegates.pglColor4fv(fp_v);
					else
						throw new InvalidOperationException("binding point Color4 cannot be found");
				}
			}
			LogProc("glColor4fv({0})", v);
		}

		/// <summary>
		/// Binding for glColor4i function.
		/// </summary>
		/// <param name="red">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="green">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="blue">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="alpha">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Color4(int red, int green, int blue, int alpha) {
			if      (Delegates.pglColor4i != null)
				Delegates.pglColor4i(red, green, blue, alpha);
			else
				throw new InvalidOperationException("binding point Color4 cannot be found");
			LogProc("glColor4i({0}, {1}, {2}, {3})", red, green, blue, alpha);
		}

		/// <summary>
		/// Binding for glColor4iv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Color4(int[] v) {
			unsafe {
				fixed (int* fp_v = v)
				{
					if      (Delegates.pglColor4iv != null)
						Delegates.pglColor4iv(fp_v);
					else
						throw new InvalidOperationException("binding point Color4 cannot be found");
				}
			}
			LogProc("glColor4iv({0})", v);
		}

		/// <summary>
		/// Binding for glColor4s function.
		/// </summary>
		/// <param name="red">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// <param name="green">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// <param name="blue">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// <param name="alpha">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Color4(Int16 red, Int16 green, Int16 blue, Int16 alpha) {
			if      (Delegates.pglColor4s != null)
				Delegates.pglColor4s(red, green, blue, alpha);
			else
				throw new InvalidOperationException("binding point Color4 cannot be found");
			LogProc("glColor4s({0}, {1}, {2}, {3})", red, green, blue, alpha);
		}

		/// <summary>
		/// Binding for glColor4sv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Int16*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Color4(Int16[] v) {
			unsafe {
				fixed (Int16* fp_v = v)
				{
					if      (Delegates.pglColor4sv != null)
						Delegates.pglColor4sv(fp_v);
					else
						throw new InvalidOperationException("binding point Color4 cannot be found");
				}
			}
			LogProc("glColor4sv({0})", v);
		}

		/// <summary>
		/// Binding for glColor4ub function.
		/// </summary>
		/// <param name="red">
		/// A <see cref="T:System.Byte"/>.
		/// </param>
		/// <param name="green">
		/// A <see cref="T:System.Byte"/>.
		/// </param>
		/// <param name="blue">
		/// A <see cref="T:System.Byte"/>.
		/// </param>
		/// <param name="alpha">
		/// A <see cref="T:System.Byte"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Color4(byte red, byte green, byte blue, byte alpha) {
			if      (Delegates.pglColor4ub != null)
				Delegates.pglColor4ub(red, green, blue, alpha);
			else
				throw new InvalidOperationException("binding point Color4 cannot be found");
			LogProc("glColor4ub({0}, {1}, {2}, {3})", red, green, blue, alpha);
		}

		/// <summary>
		/// Binding for glColor4ubv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Byte*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Color4(byte[] v) {
			unsafe {
				fixed (byte* fp_v = v)
				{
					if      (Delegates.pglColor4ubv != null)
						Delegates.pglColor4ubv(fp_v);
					else
						throw new InvalidOperationException("binding point Color4 cannot be found");
				}
			}
			LogProc("glColor4ubv({0})", v);
		}

		/// <summary>
		/// Binding for glColor4ui function.
		/// </summary>
		/// <param name="red">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="green">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="blue">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="alpha">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Color4(UInt32 red, UInt32 green, UInt32 blue, UInt32 alpha) {
			if      (Delegates.pglColor4ui != null)
				Delegates.pglColor4ui(red, green, blue, alpha);
			else
				throw new InvalidOperationException("binding point Color4 cannot be found");
			LogProc("glColor4ui({0}, {1}, {2}, {3})", red, green, blue, alpha);
		}

		/// <summary>
		/// Binding for glColor4uiv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Color4(UInt32[] v) {
			unsafe {
				fixed (UInt32* fp_v = v)
				{
					if      (Delegates.pglColor4uiv != null)
						Delegates.pglColor4uiv(fp_v);
					else
						throw new InvalidOperationException("binding point Color4 cannot be found");
				}
			}
			LogProc("glColor4uiv({0})", v);
		}

		/// <summary>
		/// Binding for glColor4us function.
		/// </summary>
		/// <param name="red">
		/// A <see cref="T:System.UInt16"/>.
		/// </param>
		/// <param name="green">
		/// A <see cref="T:System.UInt16"/>.
		/// </param>
		/// <param name="blue">
		/// A <see cref="T:System.UInt16"/>.
		/// </param>
		/// <param name="alpha">
		/// A <see cref="T:System.UInt16"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Color4(UInt16 red, UInt16 green, UInt16 blue, UInt16 alpha) {
			if      (Delegates.pglColor4us != null)
				Delegates.pglColor4us(red, green, blue, alpha);
			else
				throw new InvalidOperationException("binding point Color4 cannot be found");
			LogProc("glColor4us({0}, {1}, {2}, {3})", red, green, blue, alpha);
		}

		/// <summary>
		/// Binding for glColor4usv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.UInt16*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Color4(UInt16[] v) {
			unsafe {
				fixed (UInt16* fp_v = v)
				{
					if      (Delegates.pglColor4usv != null)
						Delegates.pglColor4usv(fp_v);
					else
						throw new InvalidOperationException("binding point Color4 cannot be found");
				}
			}
			LogProc("glColor4usv({0})", v);
		}

		/// <summary>
		/// Binding for glColorMask function.
		/// </summary>
		/// <param name="red">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="green">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="blue">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="alpha">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void ColorMask(bool red, bool green, bool blue, bool alpha) {
			if      (Delegates.pglColorMask != null)
				Delegates.pglColorMask(red, green, blue, alpha);
			else
				throw new InvalidOperationException("binding point ColorMask cannot be found");
			LogProc("glColorMask({0}, {1}, {2}, {3})", red, green, blue, alpha);
		}

		/// <summary>
		/// Binding for glColorMaski function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="r">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="g">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="b">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="a">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void ColorMask(UInt32 index, bool r, bool g, bool b, bool a) {
			if      (Delegates.pglColorMaski != null)
				Delegates.pglColorMaski(index, r, g, b, a);
			else
				throw new InvalidOperationException("binding point ColorMask cannot be found");
			LogProc("glColorMaski({0}, {1}, {2}, {3}, {4})", index, r, g, b, a);
		}

		/// <summary>
		/// Binding for glColorMaterial function.
		/// </summary>
		/// <param name="face">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void ColorMaterial(int face, int mode) {
			if      (Delegates.pglColorMaterial != null)
				Delegates.pglColorMaterial(face, mode);
			else
				throw new InvalidOperationException("binding point ColorMaterial cannot be found");
			LogProc("glColorMaterial({0}, {1})", face, mode);
		}

		/// <summary>
		/// Binding for glColorP3ui function.
		/// </summary>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="color">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void ColorP3(int type, UInt32 color) {
			if      (Delegates.pglColorP3ui != null)
				Delegates.pglColorP3ui(type, color);
			else
				throw new InvalidOperationException("binding point ColorP3 cannot be found");
			LogProc("glColorP3ui({0}, {1})", type, color);
		}

		/// <summary>
		/// Binding for glColorP3uiv function.
		/// </summary>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="color">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void ColorP3(int type, UInt32[] color) {
			unsafe {
				fixed (UInt32* fp_color = color)
				{
					if      (Delegates.pglColorP3uiv != null)
						Delegates.pglColorP3uiv(type, fp_color);
					else
						throw new InvalidOperationException("binding point ColorP3 cannot be found");
				}
			}
			LogProc("glColorP3uiv({0}, {1})", type, color);
		}

		/// <summary>
		/// Binding for glColorP3uiv function.
		/// </summary>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="color">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void ColorP3(int type, UInt32* color) {
			unsafe {
				if      (Delegates.pglColorP3uiv != null)
					Delegates.pglColorP3uiv(type, color);
				else
					throw new InvalidOperationException("binding point ColorP3 cannot be found");
			}
			LogProc("glColorP3uiv({0}, {1})", type, "color");
		}
		

		/// <summary>
		/// Binding for glColorP4ui function.
		/// </summary>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="color">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void ColorP4(int type, UInt32 color) {
			if      (Delegates.pglColorP4ui != null)
				Delegates.pglColorP4ui(type, color);
			else
				throw new InvalidOperationException("binding point ColorP4 cannot be found");
			LogProc("glColorP4ui({0}, {1})", type, color);
		}

		/// <summary>
		/// Binding for glColorP4uiv function.
		/// </summary>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="color">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void ColorP4(int type, UInt32[] color) {
			unsafe {
				fixed (UInt32* fp_color = color)
				{
					if      (Delegates.pglColorP4uiv != null)
						Delegates.pglColorP4uiv(type, fp_color);
					else
						throw new InvalidOperationException("binding point ColorP4 cannot be found");
				}
			}
			LogProc("glColorP4uiv({0}, {1})", type, color);
		}

		/// <summary>
		/// Binding for glColorP4uiv function.
		/// </summary>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="color">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void ColorP4(int type, UInt32* color) {
			unsafe {
				if      (Delegates.pglColorP4uiv != null)
					Delegates.pglColorP4uiv(type, color);
				else
					throw new InvalidOperationException("binding point ColorP4 cannot be found");
			}
			LogProc("glColorP4uiv({0}, {1})", type, "color");
		}
		

		/// <summary>
		/// Binding for glColorPointer function.
		/// </summary>
		/// <param name="size">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="stride">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pointer">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		/// @deprecated
		public static void ColorPointer(int size, int type, Int32 stride, object pointer) {
			GCHandle pp_pointer = GCHandle.Alloc(pointer, GCHandleType.Pinned);
			try {
				if      (Delegates.pglColorPointer != null)
					Delegates.pglColorPointer(size, type, stride, pp_pointer.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point ColorPointer cannot be found");
			} finally {
				pp_pointer.Free();
			}
			LogProc("glColorPointer({0}, {1}, {2}, {3})", size, type, stride, pointer);
		}

		/// <summary>
		/// Binding for glColorSubTable function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="start">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="format">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="data">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		/// @deprecated
		public static void ColorSubTable(int target, Int32 start, Int32 count, int format, int type, object data) {
			GCHandle pp_data = GCHandle.Alloc(data, GCHandleType.Pinned);
			try {
				if      (Delegates.pglColorSubTable != null)
					Delegates.pglColorSubTable(target, start, count, format, type, pp_data.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point ColorSubTable cannot be found");
			} finally {
				pp_data.Free();
			}
			LogProc("glColorSubTable({0}, {1}, {2}, {3}, {4}, {5})", target, start, count, format, type, data);
		}

		/// <summary>
		/// Binding for glColorTable function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="internalformat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="format">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="table">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		/// @deprecated
		public static void ColorTable(int target, int internalformat, Int32 width, int format, int type, object table) {
			GCHandle pp_table = GCHandle.Alloc(table, GCHandleType.Pinned);
			try {
				if      (Delegates.pglColorTable != null)
					Delegates.pglColorTable(target, internalformat, width, format, type, pp_table.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point ColorTable cannot be found");
			} finally {
				pp_table.Free();
			}
			LogProc("glColorTable({0}, {1}, {2}, {3}, {4}, {5})", target, internalformat, width, format, type, table);
		}

		/// <summary>
		/// Binding for glColorTableParameterfv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		/// @deprecated
		public static void ColorTableParameter(int target, int pname, float[] @params) {
			unsafe {
				fixed (float* fp_params = @params)
				{
					if      (Delegates.pglColorTableParameterfv != null)
						Delegates.pglColorTableParameterfv(target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point ColorTableParameter cannot be found");
				}
			}
			LogProc("glColorTableParameterfv({0}, {1}, {2})", target, pname, @params);
		}

		/// <summary>
		/// Binding for glColorTableParameteriv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		/// @deprecated
		public static void ColorTableParameter(int target, int pname, int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglColorTableParameteriv != null)
						Delegates.pglColorTableParameteriv(target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point ColorTableParameter cannot be found");
				}
			}
			LogProc("glColorTableParameteriv({0}, {1}, {2})", target, pname, @params);
		}

		/// <summary>
		/// Binding for glCompileShader function.
		/// </summary>
		/// <param name="shader">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void CompileShader(UInt32 shader) {
			if      (Delegates.pglCompileShader != null)
				Delegates.pglCompileShader(shader);
			else
				throw new InvalidOperationException("binding point CompileShader cannot be found");
			LogProc("glCompileShader({0})", shader);
		}

		/// <summary>
		/// Binding for glCompressedTexImage1D function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="internalformat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="border">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="imageSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="data">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void CompressedTexImage1D(int target, int level, int internalformat, Int32 width, int border, Int32 imageSize, object data) {
			GCHandle pp_data = GCHandle.Alloc(data, GCHandleType.Pinned);
			try {
				if      (Delegates.pglCompressedTexImage1D != null)
					Delegates.pglCompressedTexImage1D(target, level, internalformat, width, border, imageSize, pp_data.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point CompressedTexImage1D cannot be found");
			} finally {
				pp_data.Free();
			}
			LogProc("glCompressedTexImage1D({0}, {1}, {2}, {3}, {4}, {5}, {6})", target, level, internalformat, width, border, imageSize, data);
		}

		/// <summary>
		/// Binding for glCompressedTexImage2D function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="internalformat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="border">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="imageSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="data">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void CompressedTexImage2D(int target, int level, int internalformat, Int32 width, Int32 height, int border, Int32 imageSize, object data) {
			GCHandle pp_data = GCHandle.Alloc(data, GCHandleType.Pinned);
			try {
				if      (Delegates.pglCompressedTexImage2D != null)
					Delegates.pglCompressedTexImage2D(target, level, internalformat, width, height, border, imageSize, pp_data.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point CompressedTexImage2D cannot be found");
			} finally {
				pp_data.Free();
			}
			LogProc("glCompressedTexImage2D({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7})", target, level, internalformat, width, height, border, imageSize, data);
		}

		/// <summary>
		/// Binding for glCompressedTexImage3D function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="internalformat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="depth">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="border">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="imageSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="data">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void CompressedTexImage3D(int target, int level, int internalformat, Int32 width, Int32 height, Int32 depth, int border, Int32 imageSize, object data) {
			GCHandle pp_data = GCHandle.Alloc(data, GCHandleType.Pinned);
			try {
				if      (Delegates.pglCompressedTexImage3D != null)
					Delegates.pglCompressedTexImage3D(target, level, internalformat, width, height, depth, border, imageSize, pp_data.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point CompressedTexImage3D cannot be found");
			} finally {
				pp_data.Free();
			}
			LogProc("glCompressedTexImage3D({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8})", target, level, internalformat, width, height, depth, border, imageSize, data);
		}

		/// <summary>
		/// Binding for glCompressedTexSubImage1D function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="xoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="format">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="imageSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="data">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void CompressedTexSubImage1D(int target, int level, int xoffset, Int32 width, int format, Int32 imageSize, object data) {
			GCHandle pp_data = GCHandle.Alloc(data, GCHandleType.Pinned);
			try {
				if      (Delegates.pglCompressedTexSubImage1D != null)
					Delegates.pglCompressedTexSubImage1D(target, level, xoffset, width, format, imageSize, pp_data.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point CompressedTexSubImage1D cannot be found");
			} finally {
				pp_data.Free();
			}
			LogProc("glCompressedTexSubImage1D({0}, {1}, {2}, {3}, {4}, {5}, {6})", target, level, xoffset, width, format, imageSize, data);
		}

		/// <summary>
		/// Binding for glCompressedTexSubImage2D function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="xoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="yoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="format">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="imageSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="data">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void CompressedTexSubImage2D(int target, int level, int xoffset, int yoffset, Int32 width, Int32 height, int format, Int32 imageSize, object data) {
			GCHandle pp_data = GCHandle.Alloc(data, GCHandleType.Pinned);
			try {
				if      (Delegates.pglCompressedTexSubImage2D != null)
					Delegates.pglCompressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, imageSize, pp_data.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point CompressedTexSubImage2D cannot be found");
			} finally {
				pp_data.Free();
			}
			LogProc("glCompressedTexSubImage2D({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8})", target, level, xoffset, yoffset, width, height, format, imageSize, data);
		}

		/// <summary>
		/// Binding for glCompressedTexSubImage3D function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="xoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="yoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="zoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="depth">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="format">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="imageSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="data">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void CompressedTexSubImage3D(int target, int level, int xoffset, int yoffset, int zoffset, Int32 width, Int32 height, Int32 depth, int format, Int32 imageSize, object data) {
			GCHandle pp_data = GCHandle.Alloc(data, GCHandleType.Pinned);
			try {
				if      (Delegates.pglCompressedTexSubImage3D != null)
					Delegates.pglCompressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, pp_data.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point CompressedTexSubImage3D cannot be found");
			} finally {
				pp_data.Free();
			}
			LogProc("glCompressedTexSubImage3D({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9}, {10})", target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data);
		}

		/// <summary>
		/// Binding for glConvolutionFilter1D function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="internalformat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="format">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="image">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		/// @deprecated
		public static void ConvolutionFilter1D(int target, int internalformat, Int32 width, int format, int type, object image) {
			GCHandle pp_image = GCHandle.Alloc(image, GCHandleType.Pinned);
			try {
				if      (Delegates.pglConvolutionFilter1D != null)
					Delegates.pglConvolutionFilter1D(target, internalformat, width, format, type, pp_image.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point ConvolutionFilter1D cannot be found");
			} finally {
				pp_image.Free();
			}
			LogProc("glConvolutionFilter1D({0}, {1}, {2}, {3}, {4}, {5})", target, internalformat, width, format, type, image);
		}

		/// <summary>
		/// Binding for glConvolutionFilter2D function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="internalformat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="format">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="image">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		/// @deprecated
		public static void ConvolutionFilter2D(int target, int internalformat, Int32 width, Int32 height, int format, int type, object image) {
			GCHandle pp_image = GCHandle.Alloc(image, GCHandleType.Pinned);
			try {
				if      (Delegates.pglConvolutionFilter2D != null)
					Delegates.pglConvolutionFilter2D(target, internalformat, width, height, format, type, pp_image.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point ConvolutionFilter2D cannot be found");
			} finally {
				pp_image.Free();
			}
			LogProc("glConvolutionFilter2D({0}, {1}, {2}, {3}, {4}, {5}, {6})", target, internalformat, width, height, format, type, image);
		}

		/// <summary>
		/// Binding for glConvolutionParameterf function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		/// @deprecated
		public static void ConvolutionParameter(int target, int pname, float @params) {
			if      (Delegates.pglConvolutionParameterf != null)
				Delegates.pglConvolutionParameterf(target, pname, @params);
			else
				throw new InvalidOperationException("binding point ConvolutionParameter cannot be found");
			LogProc("glConvolutionParameterf({0}, {1}, {2})", target, pname, @params);
		}

		/// <summary>
		/// Binding for glConvolutionParameterfv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		/// @deprecated
		public static void ConvolutionParameter(int target, int pname, float[] @params) {
			unsafe {
				fixed (float* fp_params = @params)
				{
					if      (Delegates.pglConvolutionParameterfv != null)
						Delegates.pglConvolutionParameterfv(target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point ConvolutionParameter cannot be found");
				}
			}
			LogProc("glConvolutionParameterfv({0}, {1}, {2})", target, pname, @params);
		}

		/// <summary>
		/// Binding for glConvolutionParameteri function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		/// @deprecated
		public static void ConvolutionParameter(int target, int pname, int @params) {
			if      (Delegates.pglConvolutionParameteri != null)
				Delegates.pglConvolutionParameteri(target, pname, @params);
			else
				throw new InvalidOperationException("binding point ConvolutionParameter cannot be found");
			LogProc("glConvolutionParameteri({0}, {1}, {2})", target, pname, @params);
		}

		/// <summary>
		/// Binding for glConvolutionParameteriv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		/// @deprecated
		public static void ConvolutionParameter(int target, int pname, int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglConvolutionParameteriv != null)
						Delegates.pglConvolutionParameteriv(target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point ConvolutionParameter cannot be found");
				}
			}
			LogProc("glConvolutionParameteriv({0}, {1}, {2})", target, pname, @params);
		}

		/// <summary>
		/// Binding for glCopyBufferSubData function.
		/// </summary>
		/// <param name="readTarget">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="writeTarget">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="readOffset">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// <param name="writeOffset">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// <param name="size">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void CopyBufferSubData(int readTarget, int writeTarget, IntPtr readOffset, IntPtr writeOffset, UInt32 size) {
			if      (Delegates.pglCopyBufferSubData != null)
				Delegates.pglCopyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size);
			else
				throw new InvalidOperationException("binding point CopyBufferSubData cannot be found");
			LogProc("glCopyBufferSubData({0}, {1}, {2}, {3}, {4})", readTarget, writeTarget, readOffset, writeOffset, size);
		}

		/// <summary>
		/// Binding for glCopyColorSubTable function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="start">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		/// @deprecated
		public static void CopyColorSubTable(int target, Int32 start, int x, int y, Int32 width) {
			if      (Delegates.pglCopyColorSubTable != null)
				Delegates.pglCopyColorSubTable(target, start, x, y, width);
			else
				throw new InvalidOperationException("binding point CopyColorSubTable cannot be found");
			LogProc("glCopyColorSubTable({0}, {1}, {2}, {3}, {4})", target, start, x, y, width);
		}

		/// <summary>
		/// Binding for glCopyColorTable function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="internalformat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		/// @deprecated
		public static void CopyColorTable(int target, int internalformat, int x, int y, Int32 width) {
			if      (Delegates.pglCopyColorTable != null)
				Delegates.pglCopyColorTable(target, internalformat, x, y, width);
			else
				throw new InvalidOperationException("binding point CopyColorTable cannot be found");
			LogProc("glCopyColorTable({0}, {1}, {2}, {3}, {4})", target, internalformat, x, y, width);
		}

		/// <summary>
		/// Binding for glCopyConvolutionFilter1D function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="internalformat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		/// @deprecated
		public static void CopyConvolutionFilter1D(int target, int internalformat, int x, int y, Int32 width) {
			if      (Delegates.pglCopyConvolutionFilter1D != null)
				Delegates.pglCopyConvolutionFilter1D(target, internalformat, x, y, width);
			else
				throw new InvalidOperationException("binding point CopyConvolutionFilter1D cannot be found");
			LogProc("glCopyConvolutionFilter1D({0}, {1}, {2}, {3}, {4})", target, internalformat, x, y, width);
		}

		/// <summary>
		/// Binding for glCopyConvolutionFilter2D function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="internalformat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		/// @deprecated
		public static void CopyConvolutionFilter2D(int target, int internalformat, int x, int y, Int32 width, Int32 height) {
			if      (Delegates.pglCopyConvolutionFilter2D != null)
				Delegates.pglCopyConvolutionFilter2D(target, internalformat, x, y, width, height);
			else
				throw new InvalidOperationException("binding point CopyConvolutionFilter2D cannot be found");
			LogProc("glCopyConvolutionFilter2D({0}, {1}, {2}, {3}, {4}, {5})", target, internalformat, x, y, width, height);
		}

		/// <summary>
		/// Binding for glCopyPixels function.
		/// </summary>
		/// <param name="x">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void CopyPixels(int x, int y, Int32 width, Int32 height, int type) {
			if      (Delegates.pglCopyPixels != null)
				Delegates.pglCopyPixels(x, y, width, height, type);
			else
				throw new InvalidOperationException("binding point CopyPixels cannot be found");
			LogProc("glCopyPixels({0}, {1}, {2}, {3}, {4})", x, y, width, height, type);
		}

		/// <summary>
		/// Binding for glCopyTexImage1D function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="internalformat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="border">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void CopyTexImage1D(int target, int level, int internalformat, int x, int y, Int32 width, int border) {
			if      (Delegates.pglCopyTexImage1D != null)
				Delegates.pglCopyTexImage1D(target, level, internalformat, x, y, width, border);
			else
				throw new InvalidOperationException("binding point CopyTexImage1D cannot be found");
			LogProc("glCopyTexImage1D({0}, {1}, {2}, {3}, {4}, {5}, {6})", target, level, internalformat, x, y, width, border);
		}

		/// <summary>
		/// Binding for glCopyTexImage2D function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="internalformat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="border">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void CopyTexImage2D(int target, int level, int internalformat, int x, int y, Int32 width, Int32 height, int border) {
			if      (Delegates.pglCopyTexImage2D != null)
				Delegates.pglCopyTexImage2D(target, level, internalformat, x, y, width, height, border);
			else
				throw new InvalidOperationException("binding point CopyTexImage2D cannot be found");
			LogProc("glCopyTexImage2D({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7})", target, level, internalformat, x, y, width, height, border);
		}

		/// <summary>
		/// Binding for glCopyTexSubImage1D function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="xoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void CopyTexSubImage1D(int target, int level, int xoffset, int x, int y, Int32 width) {
			if      (Delegates.pglCopyTexSubImage1D != null)
				Delegates.pglCopyTexSubImage1D(target, level, xoffset, x, y, width);
			else
				throw new InvalidOperationException("binding point CopyTexSubImage1D cannot be found");
			LogProc("glCopyTexSubImage1D({0}, {1}, {2}, {3}, {4}, {5})", target, level, xoffset, x, y, width);
		}

		/// <summary>
		/// Binding for glCopyTexSubImage2D function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="xoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="yoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void CopyTexSubImage2D(int target, int level, int xoffset, int yoffset, int x, int y, Int32 width, Int32 height) {
			if      (Delegates.pglCopyTexSubImage2D != null)
				Delegates.pglCopyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height);
			else
				throw new InvalidOperationException("binding point CopyTexSubImage2D cannot be found");
			LogProc("glCopyTexSubImage2D({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7})", target, level, xoffset, yoffset, x, y, width, height);
		}

		/// <summary>
		/// Binding for glCopyTexSubImage3D function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="xoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="yoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="zoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void CopyTexSubImage3D(int target, int level, int xoffset, int yoffset, int zoffset, int x, int y, Int32 width, Int32 height) {
			if      (Delegates.pglCopyTexSubImage3D != null)
				Delegates.pglCopyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, width, height);
			else
				throw new InvalidOperationException("binding point CopyTexSubImage3D cannot be found");
			LogProc("glCopyTexSubImage3D({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8})", target, level, xoffset, yoffset, zoffset, x, y, width, height);
		}

		/// <summary>
		/// Binding for glCreateProgram function.
		/// </summary>
		/// @note This routine is available from OpenGL 2.0
		public static UInt32 CreateProgram() {
			UInt32 retvalue;
			if      (Delegates.pglCreateProgram != null)
				retvalue = (Delegates.pglCreateProgram());
			else
				throw new InvalidOperationException("binding point CreateProgram cannot be found");
			LogProc("glCreateProgram()");
			return (retvalue);
		}

		/// <summary>
		/// Binding for glCreateShader function.
		/// </summary>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static UInt32 CreateShader(int type) {
			UInt32 retvalue;
			if      (Delegates.pglCreateShader != null)
				retvalue = (Delegates.pglCreateShader(type));
			else
				throw new InvalidOperationException("binding point CreateShader cannot be found");
			LogProc("glCreateShader({0}) = {1}", type, retvalue);
			return (retvalue);
		}

		/// <summary>
		/// Binding for glCreateShaderProgramv function.
		/// </summary>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="strings">
		/// A <see cref="T:System.String[]"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static UInt32 CreateShaderProgram(int type, Int32 count, string[] strings) {
			UInt32 retvalue;
			if      (Delegates.pglCreateShaderProgramv != null)
				retvalue = (Delegates.pglCreateShaderProgramv(type, count, strings));
			else
				throw new InvalidOperationException("binding point CreateShaderProgram cannot be found");
			LogProc("glCreateShaderProgramv({0}, {1}, {2}) = {3}", type, count, strings, retvalue);
			return (retvalue);
		}

		/// <summary>
		/// Binding for glCullFace function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void CullFace(int mode) {
			if      (Delegates.pglCullFace != null)
				Delegates.pglCullFace(mode);
			else
				throw new InvalidOperationException("binding point CullFace cannot be found");
			LogProc("glCullFace({0})", mode);
		}

		/// <summary>
		/// Binding for glDeleteBuffers function.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="buffers">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.5
		public static void DeleteBuffers(Int32 n, UInt32[] buffers) {
			unsafe {
				fixed (UInt32* fp_buffers = buffers)
				{
					if      (Delegates.pglDeleteBuffers != null)
						Delegates.pglDeleteBuffers(n, fp_buffers);
					else
						throw new InvalidOperationException("binding point DeleteBuffers cannot be found");
				}
			}
			LogProc("glDeleteBuffers({0}, {1})", n, buffers);
		}

		/// <summary>
		/// Binding for glDeleteFramebuffers function.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="framebuffers">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void DeleteFramebuffers(Int32 n, UInt32[] framebuffers) {
			unsafe {
				fixed (UInt32* fp_framebuffers = framebuffers)
				{
					if      (Delegates.pglDeleteFramebuffers != null)
						Delegates.pglDeleteFramebuffers(n, fp_framebuffers);
					else
						throw new InvalidOperationException("binding point DeleteFramebuffers cannot be found");
				}
			}
			LogProc("glDeleteFramebuffers({0}, {1})", n, framebuffers);
		}

		/// <summary>
		/// Binding for glDeleteFramebuffers function.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="framebuffers">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void DeleteFramebuffers(Int32 n, UInt32* framebuffers) {
			unsafe {
				if      (Delegates.pglDeleteFramebuffers != null)
					Delegates.pglDeleteFramebuffers(n, framebuffers);
				else
					throw new InvalidOperationException("binding point DeleteFramebuffers cannot be found");
			}
			LogProc("glDeleteFramebuffers({0}, {1})", n, "framebuffers");
		}
		

		/// <summary>
		/// Binding for glDeleteLists function.
		/// </summary>
		/// <param name="list">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="range">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void DeleteLists(UInt32 list, Int32 range) {
			if      (Delegates.pglDeleteLists != null)
				Delegates.pglDeleteLists(list, range);
			else
				throw new InvalidOperationException("binding point DeleteLists cannot be found");
			LogProc("glDeleteLists({0}, {1})", list, range);
		}

		/// <summary>
		/// Binding for glDeleteProgram function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void DeleteProgram(UInt32 program) {
			if      (Delegates.pglDeleteProgram != null)
				Delegates.pglDeleteProgram(program);
			else
				throw new InvalidOperationException("binding point DeleteProgram cannot be found");
			LogProc("glDeleteProgram({0})", program);
		}

		/// <summary>
		/// Binding for glDeleteProgramPipelines function.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pipelines">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void DeleteProgramPipelines(Int32 n, UInt32[] pipelines) {
			unsafe {
				fixed (UInt32* fp_pipelines = pipelines)
				{
					if      (Delegates.pglDeleteProgramPipelines != null)
						Delegates.pglDeleteProgramPipelines(n, fp_pipelines);
					else
						throw new InvalidOperationException("binding point DeleteProgramPipelines cannot be found");
				}
			}
			LogProc("glDeleteProgramPipelines({0}, {1})", n, pipelines);
		}

		/// <summary>
		/// Binding for glDeleteProgramPipelines function.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pipelines">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void DeleteProgramPipelines(Int32 n, UInt32* pipelines) {
			unsafe {
				if      (Delegates.pglDeleteProgramPipelines != null)
					Delegates.pglDeleteProgramPipelines(n, pipelines);
				else
					throw new InvalidOperationException("binding point DeleteProgramPipelines cannot be found");
			}
			LogProc("glDeleteProgramPipelines({0}, {1})", n, "pipelines");
		}
		

		/// <summary>
		/// Binding for glDeleteQueries function.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="ids">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.5
		public static void DeleteQueries(Int32 n, UInt32[] ids) {
			unsafe {
				fixed (UInt32* fp_ids = ids)
				{
					if      (Delegates.pglDeleteQueries != null)
						Delegates.pglDeleteQueries(n, fp_ids);
					else
						throw new InvalidOperationException("binding point DeleteQueries cannot be found");
				}
			}
			LogProc("glDeleteQueries({0}, {1})", n, ids);
		}

		/// <summary>
		/// Binding for glDeleteQueries function.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="ids">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.5
		public static void DeleteQueries(Int32 n, UInt32* ids) {
			unsafe {
				if      (Delegates.pglDeleteQueries != null)
					Delegates.pglDeleteQueries(n, ids);
				else
					throw new InvalidOperationException("binding point DeleteQueries cannot be found");
			}
			LogProc("glDeleteQueries({0}, {1})", n, "ids");
		}
		

		/// <summary>
		/// Binding for glDeleteRenderbuffers function.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="renderbuffers">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void DeleteRenderbuffer(Int32 n, UInt32[] renderbuffers) {
			unsafe {
				fixed (UInt32* fp_renderbuffers = renderbuffers)
				{
					if      (Delegates.pglDeleteRenderbuffers != null)
						Delegates.pglDeleteRenderbuffers(n, fp_renderbuffers);
					else
						throw new InvalidOperationException("binding point DeleteRenderbuffer cannot be found");
				}
			}
			LogProc("glDeleteRenderbuffers({0}, {1})", n, renderbuffers);
		}

		/// <summary>
		/// Binding for glDeleteRenderbuffers function.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="renderbuffers">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void DeleteRenderbuffer(Int32 n, UInt32* renderbuffers) {
			unsafe {
				if      (Delegates.pglDeleteRenderbuffers != null)
					Delegates.pglDeleteRenderbuffers(n, renderbuffers);
				else
					throw new InvalidOperationException("binding point DeleteRenderbuffer cannot be found");
			}
			LogProc("glDeleteRenderbuffers({0}, {1})", n, "renderbuffers");
		}
		

		/// <summary>
		/// Binding for glDeleteSamplers function.
		/// </summary>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="samplers">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void DeleteSamplers(Int32 count, UInt32[] samplers) {
			unsafe {
				fixed (UInt32* fp_samplers = samplers)
				{
					if      (Delegates.pglDeleteSamplers != null)
						Delegates.pglDeleteSamplers(count, fp_samplers);
					else
						throw new InvalidOperationException("binding point DeleteSamplers cannot be found");
				}
			}
			LogProc("glDeleteSamplers({0}, {1})", count, samplers);
		}

		/// <summary>
		/// Binding for glDeleteSamplers function.
		/// </summary>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="samplers">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void DeleteSamplers(Int32 count, UInt32* samplers) {
			unsafe {
				if      (Delegates.pglDeleteSamplers != null)
					Delegates.pglDeleteSamplers(count, samplers);
				else
					throw new InvalidOperationException("binding point DeleteSamplers cannot be found");
			}
			LogProc("glDeleteSamplers({0}, {1})", count, "samplers");
		}
		

		/// <summary>
		/// Binding for glDeleteShader function.
		/// </summary>
		/// <param name="shader">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void DeleteShader(UInt32 shader) {
			if      (Delegates.pglDeleteShader != null)
				Delegates.pglDeleteShader(shader);
			else
				throw new InvalidOperationException("binding point DeleteShader cannot be found");
			LogProc("glDeleteShader({0})", shader);
		}

		/// <summary>
		/// Binding for glDeleteSync function.
		/// </summary>
		/// <param name="sync">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void DeleteSync(int sync) {
			if      (Delegates.pglDeleteSync != null)
				Delegates.pglDeleteSync(sync);
			else
				throw new InvalidOperationException("binding point DeleteSync cannot be found");
			LogProc("glDeleteSync({0})", sync);
		}

		/// <summary>
		/// Binding for glDeleteTextures function.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="textures">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void DeleteTextures(Int32 n, UInt32[] textures) {
			unsafe {
				fixed (UInt32* fp_textures = textures)
				{
					if      (Delegates.pglDeleteTextures != null)
						Delegates.pglDeleteTextures(n, fp_textures);
					else
						throw new InvalidOperationException("binding point DeleteTextures cannot be found");
				}
			}
			LogProc("glDeleteTextures({0}, {1})", n, textures);
		}

		/// <summary>
		/// Binding for glDeleteTransformFeedbacks function.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="ids">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void DeleteTransformFeedback(Int32 n, UInt32[] ids) {
			unsafe {
				fixed (UInt32* fp_ids = ids)
				{
					if      (Delegates.pglDeleteTransformFeedbacks != null)
						Delegates.pglDeleteTransformFeedbacks(n, fp_ids);
					else
						throw new InvalidOperationException("binding point DeleteTransformFeedback cannot be found");
				}
			}
			LogProc("glDeleteTransformFeedbacks({0}, {1})", n, ids);
		}

		/// <summary>
		/// Binding for glDeleteTransformFeedbacks function.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="ids">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void DeleteTransformFeedback(Int32 n, UInt32* ids) {
			unsafe {
				if      (Delegates.pglDeleteTransformFeedbacks != null)
					Delegates.pglDeleteTransformFeedbacks(n, ids);
				else
					throw new InvalidOperationException("binding point DeleteTransformFeedback cannot be found");
			}
			LogProc("glDeleteTransformFeedbacks({0}, {1})", n, "ids");
		}
		

		/// <summary>
		/// Binding for glDeleteVertexArrays function.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="arrays">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void DeleteVertexArrays(Int32 n, UInt32[] arrays) {
			unsafe {
				fixed (UInt32* fp_arrays = arrays)
				{
					if      (Delegates.pglDeleteVertexArrays != null)
						Delegates.pglDeleteVertexArrays(n, fp_arrays);
					else
						throw new InvalidOperationException("binding point DeleteVertexArrays cannot be found");
				}
			}
			LogProc("glDeleteVertexArrays({0}, {1})", n, arrays);
		}

		/// <summary>
		/// Binding for glDeleteVertexArrays function.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="arrays">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void DeleteVertexArrays(Int32 n, UInt32* arrays) {
			unsafe {
				if      (Delegates.pglDeleteVertexArrays != null)
					Delegates.pglDeleteVertexArrays(n, arrays);
				else
					throw new InvalidOperationException("binding point DeleteVertexArrays cannot be found");
			}
			LogProc("glDeleteVertexArrays({0}, {1})", n, "arrays");
		}
		

		/// <summary>
		/// Binding for glDepthFunc function.
		/// </summary>
		/// <param name="func">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void DepthFunc(int func) {
			if      (Delegates.pglDepthFunc != null)
				Delegates.pglDepthFunc(func);
			else
				throw new InvalidOperationException("binding point DepthFunc cannot be found");
			LogProc("glDepthFunc({0})", func);
		}

		/// <summary>
		/// Binding for glDepthMask function.
		/// </summary>
		/// <param name="flag">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void DepthMask(bool flag) {
			if      (Delegates.pglDepthMask != null)
				Delegates.pglDepthMask(flag);
			else
				throw new InvalidOperationException("binding point DepthMask cannot be found");
			LogProc("glDepthMask({0})", flag);
		}

		/// <summary>
		/// Binding for glDepthRange function.
		/// </summary>
		/// <param name="near">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="far">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void DepthRange(double near, double far) {
			if      (Delegates.pglDepthRange != null)
				Delegates.pglDepthRange(near, far);
			else
				throw new InvalidOperationException("binding point DepthRange cannot be found");
			LogProc("glDepthRange({0}, {1})", near, far);
		}

		/// <summary>
		/// Binding for glDepthRangeArrayv function.
		/// </summary>
		/// <param name="first">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void DepthRangeArray(UInt32 first, Int32 count, double[] v) {
			unsafe {
				fixed (double* fp_v = v)
				{
					if      (Delegates.pglDepthRangeArrayv != null)
						Delegates.pglDepthRangeArrayv(first, count, fp_v);
					else
						throw new InvalidOperationException("binding point DepthRangeArray cannot be found");
				}
			}
			LogProc("glDepthRangeArrayv({0}, {1}, {2})", first, count, v);
		}

		/// <summary>
		/// Binding for glDepthRangef function.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="f">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void DepthRange(float n, float f) {
			if      (Delegates.pglDepthRangef != null)
				Delegates.pglDepthRangef(n, f);
			else
				throw new InvalidOperationException("binding point DepthRange cannot be found");
			LogProc("glDepthRangef({0}, {1})", n, f);
		}

		/// <summary>
		/// Binding for glDepthRangeIndexed function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="n">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="f">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void DepthRangeIndexed(UInt32 index, double n, double f) {
			if      (Delegates.pglDepthRangeIndexed != null)
				Delegates.pglDepthRangeIndexed(index, n, f);
			else
				throw new InvalidOperationException("binding point DepthRangeIndexed cannot be found");
			LogProc("glDepthRangeIndexed({0}, {1}, {2})", index, n, f);
		}

		/// <summary>
		/// Binding for glDetachShader function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="shader">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void DetachShader(UInt32 program, UInt32 shader) {
			if      (Delegates.pglDetachShader != null)
				Delegates.pglDetachShader(program, shader);
			else
				throw new InvalidOperationException("binding point DetachShader cannot be found");
			LogProc("glDetachShader({0}, {1})", program, shader);
		}

		/// <summary>
		/// Binding for glDisable function.
		/// </summary>
		/// <param name="cap">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void Disable(int cap) {
			if      (Delegates.pglDisable != null)
				Delegates.pglDisable(cap);
			else
				throw new InvalidOperationException("binding point Disable cannot be found");
			LogProc("glDisable({0})", cap);
		}

		/// <summary>
		/// Binding for glDisableClientState function.
		/// </summary>
		/// <param name="array">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		/// @deprecated
		public static void DisableClientState(int array) {
			if      (Delegates.pglDisableClientState != null)
				Delegates.pglDisableClientState(array);
			else
				throw new InvalidOperationException("binding point DisableClientState cannot be found");
			LogProc("glDisableClientState({0})", array);
		}

		/// <summary>
		/// Binding for glDisablei function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void Disable(int target, UInt32 index) {
			if      (Delegates.pglDisablei != null)
				Delegates.pglDisablei(target, index);
			else
				throw new InvalidOperationException("binding point Disable cannot be found");
			LogProc("glDisablei({0}, {1})", target, index);
		}

		/// <summary>
		/// Binding for glDisableVertexAttribArray function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void DisableVertexAttribArray(UInt32 index) {
			if      (Delegates.pglDisableVertexAttribArray != null)
				Delegates.pglDisableVertexAttribArray(index);
			else
				throw new InvalidOperationException("binding point DisableVertexAttribArray cannot be found");
			LogProc("glDisableVertexAttribArray({0})", index);
		}

		/// <summary>
		/// Binding for glDrawArrays function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="first">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void DrawArrays(int mode, int first, Int32 count) {
			if      (Delegates.pglDrawArrays != null)
				Delegates.pglDrawArrays(mode, first, count);
			else
				throw new InvalidOperationException("binding point DrawArrays cannot be found");
			LogProc("glDrawArrays({0}, {1}, {2})", mode, first, count);
		}

		/// <summary>
		/// Binding for glDrawArraysIndirect function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="indirect">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void DrawArraysIndirect(int mode, object indirect) {
			GCHandle pp_indirect = GCHandle.Alloc(indirect, GCHandleType.Pinned);
			try {
				if      (Delegates.pglDrawArraysIndirect != null)
					Delegates.pglDrawArraysIndirect(mode, pp_indirect.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point DrawArraysIndirect cannot be found");
			} finally {
				pp_indirect.Free();
			}
			LogProc("glDrawArraysIndirect({0}, {1})", mode, indirect);
		}

		/// <summary>
		/// Binding for glDrawArraysInstanced function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="first">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="primcount">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.1
		public static void DrawArraysInstanced(int mode, int first, Int32 count, Int32 primcount) {
			if      (Delegates.pglDrawArraysInstanced != null)
				Delegates.pglDrawArraysInstanced(mode, first, count, primcount);
			else
				throw new InvalidOperationException("binding point DrawArraysInstanced cannot be found");
			LogProc("glDrawArraysInstanced({0}, {1}, {2}, {3})", mode, first, count, primcount);
		}

		/// <summary>
		/// Binding for glDrawArraysInstancedBaseInstance function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="first">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="primcount">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="baseinstance">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.2
		public static void DrawArraysInstancedBaseInstance(int mode, int first, Int32 count, Int32 primcount, UInt32 baseinstance) {
			if      (Delegates.pglDrawArraysInstancedBaseInstance != null)
				Delegates.pglDrawArraysInstancedBaseInstance(mode, first, count, primcount, baseinstance);
			else
				throw new InvalidOperationException("binding point DrawArraysInstancedBaseInstance cannot be found");
			LogProc("glDrawArraysInstancedBaseInstance({0}, {1}, {2}, {3}, {4})", mode, first, count, primcount, baseinstance);
		}

		/// <summary>
		/// Binding for glDrawBuffer function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void DrawBuffer(int mode) {
			if      (Delegates.pglDrawBuffer != null)
				Delegates.pglDrawBuffer(mode);
			else
				throw new InvalidOperationException("binding point DrawBuffer cannot be found");
			LogProc("glDrawBuffer({0})", mode);
		}

		/// <summary>
		/// Binding for glDrawBuffers function.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="bufs">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void DrawBuffers(Int32 n, int[] bufs) {
			unsafe {
				fixed (int* fp_bufs = bufs)
				{
					if      (Delegates.pglDrawBuffers != null)
						Delegates.pglDrawBuffers(n, fp_bufs);
					else
						throw new InvalidOperationException("binding point DrawBuffers cannot be found");
				}
			}
			LogProc("glDrawBuffers({0}, {1})", n, bufs);
		}

		/// <summary>
		/// Binding for glDrawElements function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="indices">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void DrawElements(int mode, Int32 count, int type, object indices) {
			GCHandle pp_indices = GCHandle.Alloc(indices, GCHandleType.Pinned);
			try {
				if      (Delegates.pglDrawElements != null)
					Delegates.pglDrawElements(mode, count, type, pp_indices.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point DrawElements cannot be found");
			} finally {
				pp_indices.Free();
			}
			LogProc("glDrawElements({0}, {1}, {2}, {3})", mode, count, type, indices);
		}

		/// <summary>
		/// Binding for glDrawElementsBaseVertex function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="indices">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// <param name="basevertex">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void DrawElementsBaseVertex(int mode, Int32 count, int type, object indices, int basevertex) {
			GCHandle pp_indices = GCHandle.Alloc(indices, GCHandleType.Pinned);
			try {
				if      (Delegates.pglDrawElementsBaseVertex != null)
					Delegates.pglDrawElementsBaseVertex(mode, count, type, pp_indices.AddrOfPinnedObject(), basevertex);
				else
					throw new InvalidOperationException("binding point DrawElementsBaseVertex cannot be found");
			} finally {
				pp_indices.Free();
			}
			LogProc("glDrawElementsBaseVertex({0}, {1}, {2}, {3}, {4})", mode, count, type, indices, basevertex);
		}

		/// <summary>
		/// Binding for glDrawElementsIndirect function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="indirect">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void DrawElementsIndirect(int mode, int type, object indirect) {
			GCHandle pp_indirect = GCHandle.Alloc(indirect, GCHandleType.Pinned);
			try {
				if      (Delegates.pglDrawElementsIndirect != null)
					Delegates.pglDrawElementsIndirect(mode, type, pp_indirect.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point DrawElementsIndirect cannot be found");
			} finally {
				pp_indirect.Free();
			}
			LogProc("glDrawElementsIndirect({0}, {1}, {2})", mode, type, indirect);
		}

		/// <summary>
		/// Binding for glDrawElementsInstanced function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="indices">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// <param name="primcount">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.1
		public static void DrawElementsInstanced(int mode, Int32 count, int type, object indices, Int32 primcount) {
			GCHandle pp_indices = GCHandle.Alloc(indices, GCHandleType.Pinned);
			try {
				if      (Delegates.pglDrawElementsInstanced != null)
					Delegates.pglDrawElementsInstanced(mode, count, type, pp_indices.AddrOfPinnedObject(), primcount);
				else
					throw new InvalidOperationException("binding point DrawElementsInstanced cannot be found");
			} finally {
				pp_indices.Free();
			}
			LogProc("glDrawElementsInstanced({0}, {1}, {2}, {3}, {4})", mode, count, type, indices, primcount);
		}

		/// <summary>
		/// Binding for glDrawElementsInstancedBaseInstance function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="indices">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// <param name="primcount">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="baseinstance">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.2
		public static void DrawElementsInstancedBaseInstance(int mode, Int32 count, int type, object indices, Int32 primcount, UInt32 baseinstance) {
			GCHandle pp_indices = GCHandle.Alloc(indices, GCHandleType.Pinned);
			try {
				if      (Delegates.pglDrawElementsInstancedBaseInstance != null)
					Delegates.pglDrawElementsInstancedBaseInstance(mode, count, type, pp_indices.AddrOfPinnedObject(), primcount, baseinstance);
				else
					throw new InvalidOperationException("binding point DrawElementsInstancedBaseInstance cannot be found");
			} finally {
				pp_indices.Free();
			}
			LogProc("glDrawElementsInstancedBaseInstance({0}, {1}, {2}, {3}, {4}, {5})", mode, count, type, indices, primcount, baseinstance);
		}

		/// <summary>
		/// Binding for glDrawElementsInstancedBaseVertex function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="indices">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// <param name="primcount">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="basevertex">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void DrawElementsInstancedBaseVertex(int mode, Int32 count, int type, object indices, Int32 primcount, int basevertex) {
			GCHandle pp_indices = GCHandle.Alloc(indices, GCHandleType.Pinned);
			try {
				if      (Delegates.pglDrawElementsInstancedBaseVertex != null)
					Delegates.pglDrawElementsInstancedBaseVertex(mode, count, type, pp_indices.AddrOfPinnedObject(), primcount, basevertex);
				else
					throw new InvalidOperationException("binding point DrawElementsInstancedBaseVertex cannot be found");
			} finally {
				pp_indices.Free();
			}
			LogProc("glDrawElementsInstancedBaseVertex({0}, {1}, {2}, {3}, {4}, {5})", mode, count, type, indices, primcount, basevertex);
		}

		/// <summary>
		/// Binding for glDrawElementsInstancedBaseVertexBaseInstance function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="indices">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// <param name="primcount">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="basevertex">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="baseinstance">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.2
		public static void DrawElementsInstancedBaseVertexBaseInstance(int mode, Int32 count, int type, object indices, Int32 primcount, int basevertex, UInt32 baseinstance) {
			GCHandle pp_indices = GCHandle.Alloc(indices, GCHandleType.Pinned);
			try {
				if      (Delegates.pglDrawElementsInstancedBaseVertexBaseInstance != null)
					Delegates.pglDrawElementsInstancedBaseVertexBaseInstance(mode, count, type, pp_indices.AddrOfPinnedObject(), primcount, basevertex, baseinstance);
				else
					throw new InvalidOperationException("binding point DrawElementsInstancedBaseVertexBaseInstance cannot be found");
			} finally {
				pp_indices.Free();
			}
			LogProc("glDrawElementsInstancedBaseVertexBaseInstance({0}, {1}, {2}, {3}, {4}, {5}, {6})", mode, count, type, indices, primcount, basevertex, baseinstance);
		}

		/// <summary>
		/// Binding for glDrawPixels function.
		/// </summary>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="format">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pixels">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void DrawPixels(Int32 width, Int32 height, int format, int type, object pixels) {
			GCHandle pp_pixels = GCHandle.Alloc(pixels, GCHandleType.Pinned);
			try {
				if      (Delegates.pglDrawPixels != null)
					Delegates.pglDrawPixels(width, height, format, type, pp_pixels.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point DrawPixels cannot be found");
			} finally {
				pp_pixels.Free();
			}
			LogProc("glDrawPixels({0}, {1}, {2}, {3}, {4})", width, height, format, type, pixels);
		}

		/// <summary>
		/// Binding for glDrawRangeElements function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="start">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="end">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="indices">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void DrawRangeElements(int mode, UInt32 start, UInt32 end, Int32 count, int type, object indices) {
			GCHandle pp_indices = GCHandle.Alloc(indices, GCHandleType.Pinned);
			try {
				if      (Delegates.pglDrawRangeElements != null)
					Delegates.pglDrawRangeElements(mode, start, end, count, type, pp_indices.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point DrawRangeElements cannot be found");
			} finally {
				pp_indices.Free();
			}
			LogProc("glDrawRangeElements({0}, {1}, {2}, {3}, {4}, {5})", mode, start, end, count, type, indices);
		}

		/// <summary>
		/// Binding for glDrawRangeElementsBaseVertex function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="start">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="end">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="indices">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// <param name="basevertex">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void DrawRangeElementsBaseVertex(int mode, UInt32 start, UInt32 end, Int32 count, int type, object indices, int basevertex) {
			GCHandle pp_indices = GCHandle.Alloc(indices, GCHandleType.Pinned);
			try {
				if      (Delegates.pglDrawRangeElementsBaseVertex != null)
					Delegates.pglDrawRangeElementsBaseVertex(mode, start, end, count, type, pp_indices.AddrOfPinnedObject(), basevertex);
				else
					throw new InvalidOperationException("binding point DrawRangeElementsBaseVertex cannot be found");
			} finally {
				pp_indices.Free();
			}
			LogProc("glDrawRangeElementsBaseVertex({0}, {1}, {2}, {3}, {4}, {5}, {6})", mode, start, end, count, type, indices, basevertex);
		}

		/// <summary>
		/// Binding for glDrawTransformFeedback function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="id">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void DrawTransformFeedback(int mode, UInt32 id) {
			if      (Delegates.pglDrawTransformFeedback != null)
				Delegates.pglDrawTransformFeedback(mode, id);
			else
				throw new InvalidOperationException("binding point DrawTransformFeedback cannot be found");
			LogProc("glDrawTransformFeedback({0}, {1})", mode, id);
		}

		/// <summary>
		/// Binding for glDrawTransformFeedbackInstanced function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="id">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="primcount">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.2
		public static void DrawTransformFeedbackInstanced(int mode, UInt32 id, Int32 primcount) {
			if      (Delegates.pglDrawTransformFeedbackInstanced != null)
				Delegates.pglDrawTransformFeedbackInstanced(mode, id, primcount);
			else
				throw new InvalidOperationException("binding point DrawTransformFeedbackInstanced cannot be found");
			LogProc("glDrawTransformFeedbackInstanced({0}, {1}, {2})", mode, id, primcount);
		}

		/// <summary>
		/// Binding for glDrawTransformFeedbackStream function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="id">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="stream">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void DrawTransformFeedbackStream(int mode, UInt32 id, UInt32 stream) {
			if      (Delegates.pglDrawTransformFeedbackStream != null)
				Delegates.pglDrawTransformFeedbackStream(mode, id, stream);
			else
				throw new InvalidOperationException("binding point DrawTransformFeedbackStream cannot be found");
			LogProc("glDrawTransformFeedbackStream({0}, {1}, {2})", mode, id, stream);
		}

		/// <summary>
		/// Binding for glDrawTransformFeedbackStreamInstanced function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="id">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="stream">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="primcount">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.2
		public static void DrawTransformFeedbackStreamInstanced(int mode, UInt32 id, UInt32 stream, Int32 primcount) {
			if      (Delegates.pglDrawTransformFeedbackStreamInstanced != null)
				Delegates.pglDrawTransformFeedbackStreamInstanced(mode, id, stream, primcount);
			else
				throw new InvalidOperationException("binding point DrawTransformFeedbackStreamInstanced cannot be found");
			LogProc("glDrawTransformFeedbackStreamInstanced({0}, {1}, {2}, {3})", mode, id, stream, primcount);
		}

		/// <summary>
		/// Binding for glEdgeFlag function.
		/// </summary>
		/// <param name="flag">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void EdgeFlag(bool flag) {
			if      (Delegates.pglEdgeFlag != null)
				Delegates.pglEdgeFlag(flag);
			else
				throw new InvalidOperationException("binding point EdgeFlag cannot be found");
			LogProc("glEdgeFlag({0})", flag);
		}

		/// <summary>
		/// Binding for glEdgeFlagPointer function.
		/// </summary>
		/// <param name="stride">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pointer">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		/// @deprecated
		public static void EdgeFlagPointer(Int32 stride, object pointer) {
			GCHandle pp_pointer = GCHandle.Alloc(pointer, GCHandleType.Pinned);
			try {
				if      (Delegates.pglEdgeFlagPointer != null)
					Delegates.pglEdgeFlagPointer(stride, pp_pointer.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point EdgeFlagPointer cannot be found");
			} finally {
				pp_pointer.Free();
			}
			LogProc("glEdgeFlagPointer({0}, {1})", stride, pointer);
		}

		/// <summary>
		/// Binding for glEdgeFlagv function.
		/// </summary>
		/// <param name="flag">
		/// A <see cref="T:System.Boolean*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void EdgeFlag(bool[] flag) {
			unsafe {
				fixed (bool* fp_flag = flag)
				{
					if      (Delegates.pglEdgeFlagv != null)
						Delegates.pglEdgeFlagv(fp_flag);
					else
						throw new InvalidOperationException("binding point EdgeFlag cannot be found");
				}
			}
			LogProc("glEdgeFlagv({0})", flag);
		}

		/// <summary>
		/// Binding for glEnable function.
		/// </summary>
		/// <param name="cap">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void Enable(int cap) {
			if      (Delegates.pglEnable != null)
				Delegates.pglEnable(cap);
			else
				throw new InvalidOperationException("binding point Enable cannot be found");
			LogProc("glEnable({0})", cap);
		}

		/// <summary>
		/// Binding for glEnableClientState function.
		/// </summary>
		/// <param name="array">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		/// @deprecated
		public static void EnableClientState(int array) {
			if      (Delegates.pglEnableClientState != null)
				Delegates.pglEnableClientState(array);
			else
				throw new InvalidOperationException("binding point EnableClientState cannot be found");
			LogProc("glEnableClientState({0})", array);
		}

		/// <summary>
		/// Binding for glEnablei function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void Enable(int target, UInt32 index) {
			if      (Delegates.pglEnablei != null)
				Delegates.pglEnablei(target, index);
			else
				throw new InvalidOperationException("binding point Enable cannot be found");
			LogProc("glEnablei({0}, {1})", target, index);
		}

		/// <summary>
		/// Binding for glEnableVertexAttribArray function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void EnableVertexAttribArray(UInt32 index) {
			if      (Delegates.pglEnableVertexAttribArray != null)
				Delegates.pglEnableVertexAttribArray(index);
			else
				throw new InvalidOperationException("binding point EnableVertexAttribArray cannot be found");
			LogProc("glEnableVertexAttribArray({0})", index);
		}

		/// <summary>
		/// Binding for glEnd function.
		/// </summary>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void End() {
			if      (Delegates.pglEnd != null)
				Delegates.pglEnd();
			else
				throw new InvalidOperationException("binding point End cannot be found");
			LogProc("glEnd()");
		}

		/// <summary>
		/// Binding for glEndConditionalRender function.
		/// </summary>
		/// @note This routine is available from OpenGL 3.0
		public static void EndConditionalRender() {
			if      (Delegates.pglEndConditionalRender != null)
				Delegates.pglEndConditionalRender();
			else
				throw new InvalidOperationException("binding point EndConditionalRender cannot be found");
			LogProc("glEndConditionalRender()");
		}

		/// <summary>
		/// Binding for glEndList function.
		/// </summary>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void EndList() {
			if      (Delegates.pglEndList != null)
				Delegates.pglEndList();
			else
				throw new InvalidOperationException("binding point EndList cannot be found");
			LogProc("glEndList()");
		}

		/// <summary>
		/// Binding for glEndQuery function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.5
		public static void EndQuery(int target) {
			if      (Delegates.pglEndQuery != null)
				Delegates.pglEndQuery(target);
			else
				throw new InvalidOperationException("binding point EndQuery cannot be found");
			LogProc("glEndQuery({0})", target);
		}

		/// <summary>
		/// Binding for glEndQueryIndexed function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void EndQueryIndexed(int target, UInt32 index) {
			if      (Delegates.pglEndQueryIndexed != null)
				Delegates.pglEndQueryIndexed(target, index);
			else
				throw new InvalidOperationException("binding point EndQueryIndexed cannot be found");
			LogProc("glEndQueryIndexed({0}, {1})", target, index);
		}

		/// <summary>
		/// Binding for glEndTransformFeedback function.
		/// </summary>
		/// @note This routine is available from OpenGL 3.0
		public static void EndTransformFeedback() {
			if      (Delegates.pglEndTransformFeedback != null)
				Delegates.pglEndTransformFeedback();
			else
				throw new InvalidOperationException("binding point EndTransformFeedback cannot be found");
			LogProc("glEndTransformFeedback()");
		}

		/// <summary>
		/// Binding for glEvalCoord1d function.
		/// </summary>
		/// <param name="u">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void EvalCoord1(double u) {
			if      (Delegates.pglEvalCoord1d != null)
				Delegates.pglEvalCoord1d(u);
			else
				throw new InvalidOperationException("binding point EvalCoord1 cannot be found");
			LogProc("glEvalCoord1d({0})", u);
		}

		/// <summary>
		/// Binding for glEvalCoord1dv function.
		/// </summary>
		/// <param name="u">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void EvalCoord1(double[] u) {
			unsafe {
				fixed (double* fp_u = u)
				{
					if      (Delegates.pglEvalCoord1dv != null)
						Delegates.pglEvalCoord1dv(fp_u);
					else
						throw new InvalidOperationException("binding point EvalCoord1 cannot be found");
				}
			}
			LogProc("glEvalCoord1dv({0})", u);
		}

		/// <summary>
		/// Binding for glEvalCoord1f function.
		/// </summary>
		/// <param name="u">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void EvalCoord1(float u) {
			if      (Delegates.pglEvalCoord1f != null)
				Delegates.pglEvalCoord1f(u);
			else
				throw new InvalidOperationException("binding point EvalCoord1 cannot be found");
			LogProc("glEvalCoord1f({0})", u);
		}

		/// <summary>
		/// Binding for glEvalCoord1fv function.
		/// </summary>
		/// <param name="u">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void EvalCoord1(float[] u) {
			unsafe {
				fixed (float* fp_u = u)
				{
					if      (Delegates.pglEvalCoord1fv != null)
						Delegates.pglEvalCoord1fv(fp_u);
					else
						throw new InvalidOperationException("binding point EvalCoord1 cannot be found");
				}
			}
			LogProc("glEvalCoord1fv({0})", u);
		}

		/// <summary>
		/// Binding for glEvalCoord2d function.
		/// </summary>
		/// <param name="u">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void EvalCoord2(double u, double v) {
			if      (Delegates.pglEvalCoord2d != null)
				Delegates.pglEvalCoord2d(u, v);
			else
				throw new InvalidOperationException("binding point EvalCoord2 cannot be found");
			LogProc("glEvalCoord2d({0}, {1})", u, v);
		}

		/// <summary>
		/// Binding for glEvalCoord2dv function.
		/// </summary>
		/// <param name="u">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void EvalCoord2(double[] u) {
			unsafe {
				fixed (double* fp_u = u)
				{
					if      (Delegates.pglEvalCoord2dv != null)
						Delegates.pglEvalCoord2dv(fp_u);
					else
						throw new InvalidOperationException("binding point EvalCoord2 cannot be found");
				}
			}
			LogProc("glEvalCoord2dv({0})", u);
		}

		/// <summary>
		/// Binding for glEvalCoord2f function.
		/// </summary>
		/// <param name="u">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void EvalCoord2(float u, float v) {
			if      (Delegates.pglEvalCoord2f != null)
				Delegates.pglEvalCoord2f(u, v);
			else
				throw new InvalidOperationException("binding point EvalCoord2 cannot be found");
			LogProc("glEvalCoord2f({0}, {1})", u, v);
		}

		/// <summary>
		/// Binding for glEvalCoord2fv function.
		/// </summary>
		/// <param name="u">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void EvalCoord2(float[] u) {
			unsafe {
				fixed (float* fp_u = u)
				{
					if      (Delegates.pglEvalCoord2fv != null)
						Delegates.pglEvalCoord2fv(fp_u);
					else
						throw new InvalidOperationException("binding point EvalCoord2 cannot be found");
				}
			}
			LogProc("glEvalCoord2fv({0})", u);
		}

		/// <summary>
		/// Binding for glEvalMesh1 function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="i1">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="i2">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void EvalMesh1(int mode, int i1, int i2) {
			if      (Delegates.pglEvalMesh1 != null)
				Delegates.pglEvalMesh1(mode, i1, i2);
			else
				throw new InvalidOperationException("binding point EvalMesh1 cannot be found");
			LogProc("glEvalMesh1({0}, {1}, {2})", mode, i1, i2);
		}

		/// <summary>
		/// Binding for glEvalMesh2 function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="i1">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="i2">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="j1">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="j2">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void EvalMesh2(int mode, int i1, int i2, int j1, int j2) {
			if      (Delegates.pglEvalMesh2 != null)
				Delegates.pglEvalMesh2(mode, i1, i2, j1, j2);
			else
				throw new InvalidOperationException("binding point EvalMesh2 cannot be found");
			LogProc("glEvalMesh2({0}, {1}, {2}, {3}, {4})", mode, i1, i2, j1, j2);
		}

		/// <summary>
		/// Binding for glEvalPoint1 function.
		/// </summary>
		/// <param name="i">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void EvalPoint1(int i) {
			if      (Delegates.pglEvalPoint1 != null)
				Delegates.pglEvalPoint1(i);
			else
				throw new InvalidOperationException("binding point EvalPoint1 cannot be found");
			LogProc("glEvalPoint1({0})", i);
		}

		/// <summary>
		/// Binding for glEvalPoint2 function.
		/// </summary>
		/// <param name="i">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="j">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void EvalPoint2(int i, int j) {
			if      (Delegates.pglEvalPoint2 != null)
				Delegates.pglEvalPoint2(i, j);
			else
				throw new InvalidOperationException("binding point EvalPoint2 cannot be found");
			LogProc("glEvalPoint2({0}, {1})", i, j);
		}

		/// <summary>
		/// Binding for glFeedbackBuffer function.
		/// </summary>
		/// <param name="size">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="buffer">
		/// A <see cref="T:System.Single*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void FeedbackBuffer(Int32 size, int type, [Out] float[] buffer) {
			unsafe {
				fixed (float* fp_buffer = buffer)
				{
					if      (Delegates.pglFeedbackBuffer != null)
						Delegates.pglFeedbackBuffer(size, type, fp_buffer);
					else
						throw new InvalidOperationException("binding point FeedbackBuffer cannot be found");
				}
			}
			LogProc("glFeedbackBuffer({0}, {1}, {2})", size, type, buffer);
		}

		/// <summary>
		/// Binding for glFenceSync function.
		/// </summary>
		/// <param name="condition">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="flags">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static int FenceSync(int condition, uint flags) {
			int retvalue;
			if      (Delegates.pglFenceSync != null)
				retvalue = (Delegates.pglFenceSync(condition, flags));
			else
				throw new InvalidOperationException("binding point FenceSync cannot be found");
			LogProc("glFenceSync({0}, {1}) = {2}", condition, flags, retvalue);
			return (retvalue);
		}

		/// <summary>
		/// Binding for glFinish function.
		/// </summary>
		/// @note This routine is available from OpenGL 1.0
		public static void Finish() {
			if      (Delegates.pglFinish != null)
				Delegates.pglFinish();
			else
				throw new InvalidOperationException("binding point Finish cannot be found");
			LogProc("glFinish()");
		}

		/// <summary>
		/// Binding for glFlush function.
		/// </summary>
		/// @note This routine is available from OpenGL 1.0
		public static void Flush() {
			if      (Delegates.pglFlush != null)
				Delegates.pglFlush();
			else
				throw new InvalidOperationException("binding point Flush cannot be found");
			LogProc("glFlush()");
		}

		/// <summary>
		/// Binding for glFlushMappedBufferRange function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="offset">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// <param name="length">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void FlushMappedBufferRange(int target, IntPtr offset, UInt32 length) {
			if      (Delegates.pglFlushMappedBufferRange != null)
				Delegates.pglFlushMappedBufferRange(target, offset, length);
			else
				throw new InvalidOperationException("binding point FlushMappedBufferRange cannot be found");
			LogProc("glFlushMappedBufferRange({0}, {1}, {2})", target, offset, length);
		}

		/// <summary>
		/// Binding for glFogCoordd function.
		/// </summary>
		/// <param name="coord">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.4
		/// @deprecated
		public static void FogCoord(double coord) {
			if      (Delegates.pglFogCoordd != null)
				Delegates.pglFogCoordd(coord);
			else
				throw new InvalidOperationException("binding point FogCoord cannot be found");
			LogProc("glFogCoordd({0})", coord);
		}

		/// <summary>
		/// Binding for glFogCoorddv function.
		/// </summary>
		/// <param name="coord">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.4
		/// @deprecated
		public static void FogCoord(double[] coord) {
			unsafe {
				fixed (double* fp_coord = coord)
				{
					if      (Delegates.pglFogCoorddv != null)
						Delegates.pglFogCoorddv(fp_coord);
					else
						throw new InvalidOperationException("binding point FogCoord cannot be found");
				}
			}
			LogProc("glFogCoorddv({0})", coord);
		}

		/// <summary>
		/// Binding for glFogCoordf function.
		/// </summary>
		/// <param name="coord">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.4
		/// @deprecated
		public static void FogCoord(float coord) {
			if      (Delegates.pglFogCoordf != null)
				Delegates.pglFogCoordf(coord);
			else
				throw new InvalidOperationException("binding point FogCoord cannot be found");
			LogProc("glFogCoordf({0})", coord);
		}

		/// <summary>
		/// Binding for glFogCoordfv function.
		/// </summary>
		/// <param name="coord">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.4
		/// @deprecated
		public static void FogCoord(float[] coord) {
			unsafe {
				fixed (float* fp_coord = coord)
				{
					if      (Delegates.pglFogCoordfv != null)
						Delegates.pglFogCoordfv(fp_coord);
					else
						throw new InvalidOperationException("binding point FogCoord cannot be found");
				}
			}
			LogProc("glFogCoordfv({0})", coord);
		}

		/// <summary>
		/// Binding for glFogCoordPointer function.
		/// </summary>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="stride">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pointer">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.4
		/// @deprecated
		public static void FogCoordPointer(int type, Int32 stride, object pointer) {
			GCHandle pp_pointer = GCHandle.Alloc(pointer, GCHandleType.Pinned);
			try {
				if      (Delegates.pglFogCoordPointer != null)
					Delegates.pglFogCoordPointer(type, stride, pp_pointer.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point FogCoordPointer cannot be found");
			} finally {
				pp_pointer.Free();
			}
			LogProc("glFogCoordPointer({0}, {1}, {2})", type, stride, pointer);
		}

		/// <summary>
		/// Binding for glFogf function.
		/// </summary>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="param">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Fog(int pname, float param) {
			if      (Delegates.pglFogf != null)
				Delegates.pglFogf(pname, param);
			else
				throw new InvalidOperationException("binding point Fog cannot be found");
			LogProc("glFogf({0}, {1})", pname, param);
		}

		/// <summary>
		/// Binding for glFogfv function.
		/// </summary>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Fog(int pname, float[] @params) {
			unsafe {
				fixed (float* fp_params = @params)
				{
					if      (Delegates.pglFogfv != null)
						Delegates.pglFogfv(pname, fp_params);
					else
						throw new InvalidOperationException("binding point Fog cannot be found");
				}
			}
			LogProc("glFogfv({0}, {1})", pname, @params);
		}

		/// <summary>
		/// Binding for glFogi function.
		/// </summary>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="param">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Fog(int pname, int param) {
			if      (Delegates.pglFogi != null)
				Delegates.pglFogi(pname, param);
			else
				throw new InvalidOperationException("binding point Fog cannot be found");
			LogProc("glFogi({0}, {1})", pname, param);
		}

		/// <summary>
		/// Binding for glFogiv function.
		/// </summary>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Fog(int pname, int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglFogiv != null)
						Delegates.pglFogiv(pname, fp_params);
					else
						throw new InvalidOperationException("binding point Fog cannot be found");
				}
			}
			LogProc("glFogiv({0}, {1})", pname, @params);
		}

		/// <summary>
		/// Binding for glFramebufferRenderbuffer function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="attachment">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="renderbuffertarget">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="renderbuffer">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void FramebufferRenderbuffer(int target, int attachment, int renderbuffertarget, UInt32 renderbuffer) {
			if      (Delegates.pglFramebufferRenderbuffer != null)
				Delegates.pglFramebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer);
			else
				throw new InvalidOperationException("binding point FramebufferRenderbuffer cannot be found");
			LogProc("glFramebufferRenderbuffer({0}, {1}, {2}, {3})", target, attachment, renderbuffertarget, renderbuffer);
		}

		/// <summary>
		/// Binding for glFramebufferTexture function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="attachment">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void FramebufferTexture(int target, int attachment, UInt32 texture, int level) {
			if      (Delegates.pglFramebufferTexture != null)
				Delegates.pglFramebufferTexture(target, attachment, texture, level);
			else
				throw new InvalidOperationException("binding point FramebufferTexture cannot be found");
			LogProc("glFramebufferTexture({0}, {1}, {2}, {3})", target, attachment, texture, level);
		}

		/// <summary>
		/// Binding for glFramebufferTexture1D function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="attachment">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="textarget">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void FramebufferTexture1D(int target, int attachment, int textarget, UInt32 texture, int level) {
			if      (Delegates.pglFramebufferTexture1D != null)
				Delegates.pglFramebufferTexture1D(target, attachment, textarget, texture, level);
			else
				throw new InvalidOperationException("binding point FramebufferTexture1D cannot be found");
			LogProc("glFramebufferTexture1D({0}, {1}, {2}, {3}, {4})", target, attachment, textarget, texture, level);
		}

		/// <summary>
		/// Binding for glFramebufferTexture2D function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="attachment">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="textarget">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void FramebufferTexture2D(int target, int attachment, int textarget, UInt32 texture, int level) {
			if      (Delegates.pglFramebufferTexture2D != null)
				Delegates.pglFramebufferTexture2D(target, attachment, textarget, texture, level);
			else
				throw new InvalidOperationException("binding point FramebufferTexture2D cannot be found");
			LogProc("glFramebufferTexture2D({0}, {1}, {2}, {3}, {4})", target, attachment, textarget, texture, level);
		}

		/// <summary>
		/// Binding for glFramebufferTexture3D function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="attachment">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="textarget">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="zoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void FramebufferTexture3D(int target, int attachment, int textarget, UInt32 texture, int level, int zoffset) {
			if      (Delegates.pglFramebufferTexture3D != null)
				Delegates.pglFramebufferTexture3D(target, attachment, textarget, texture, level, zoffset);
			else
				throw new InvalidOperationException("binding point FramebufferTexture3D cannot be found");
			LogProc("glFramebufferTexture3D({0}, {1}, {2}, {3}, {4}, {5})", target, attachment, textarget, texture, level, zoffset);
		}

		/// <summary>
		/// Binding for glFramebufferTextureLayer function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="attachment">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="layer">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void FramebufferTextureLayer(int target, int attachment, UInt32 texture, int level, int layer) {
			if      (Delegates.pglFramebufferTextureLayer != null)
				Delegates.pglFramebufferTextureLayer(target, attachment, texture, level, layer);
			else
				throw new InvalidOperationException("binding point FramebufferTextureLayer cannot be found");
			LogProc("glFramebufferTextureLayer({0}, {1}, {2}, {3}, {4})", target, attachment, texture, level, layer);
		}

		/// <summary>
		/// Binding for glFrontFace function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void FrontFace(int mode) {
			if      (Delegates.pglFrontFace != null)
				Delegates.pglFrontFace(mode);
			else
				throw new InvalidOperationException("binding point FrontFace cannot be found");
			LogProc("glFrontFace({0})", mode);
		}

		/// <summary>
		/// Binding for glFrustum function.
		/// </summary>
		/// <param name="left">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="right">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="bottom">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="top">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="zNear">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="zFar">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Frustum(double left, double right, double bottom, double top, double zNear, double zFar) {
			if      (Delegates.pglFrustum != null)
				Delegates.pglFrustum(left, right, bottom, top, zNear, zFar);
			else
				throw new InvalidOperationException("binding point Frustum cannot be found");
			LogProc("glFrustum({0}, {1}, {2}, {3}, {4}, {5})", left, right, bottom, top, zNear, zFar);
		}

		/// <summary>
		/// Binding for glGenBuffers function.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="buffers">
		/// A <see cref="T:System.UInt32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.5
		public static void GenBuffers(Int32 n, [Out] UInt32[] buffers) {
			unsafe {
				fixed (UInt32* fp_buffers = buffers)
				{
					if      (Delegates.pglGenBuffers != null)
						Delegates.pglGenBuffers(n, fp_buffers);
					else
						throw new InvalidOperationException("binding point GenBuffers cannot be found");
				}
			}
			LogProc("glGenBuffers({0}, {1})", n, buffers);
		}

		/// <summary>
		/// Binding for glGenBuffers function.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="buffers">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.5
		public static void GenBuffers(Int32 n, out UInt32 buffers) {
			unsafe {
				fixed (UInt32* fp_buffers = &buffers)
				{
					if      (Delegates.pglGenBuffers != null)
						Delegates.pglGenBuffers(n, fp_buffers);
					else
						throw new InvalidOperationException("binding point GenBuffers cannot be found");
				}
			}
			LogProc("glGenBuffers({0}, {1})", n, buffers);
		}
		
		/// <summary>
		/// Binding for glGenBuffers function.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="buffers">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.5
		public static void GenBuffers(Int32 n, UInt32* buffers) {
			unsafe {
				if      (Delegates.pglGenBuffers != null)
					Delegates.pglGenBuffers(n, buffers);
				else
					throw new InvalidOperationException("binding point GenBuffers cannot be found");
			}
			LogProc("glGenBuffers({0}, {1})", n, "buffers");
		}
		

		/// <summary>
		/// Binding for glGenerateMipmap function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void GenerateMipmap(int target) {
			if      (Delegates.pglGenerateMipmap != null)
				Delegates.pglGenerateMipmap(target);
			else
				throw new InvalidOperationException("binding point GenerateMipmap cannot be found");
			LogProc("glGenerateMipmap({0})", target);
		}

		/// <summary>
		/// Binding for glGenFramebuffers function.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="framebuffers">
		/// A <see cref="T:System.UInt32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void GenFramebuffers(Int32 n, [Out] UInt32[] framebuffers) {
			unsafe {
				fixed (UInt32* fp_framebuffers = framebuffers)
				{
					if      (Delegates.pglGenFramebuffers != null)
						Delegates.pglGenFramebuffers(n, fp_framebuffers);
					else
						throw new InvalidOperationException("binding point GenFramebuffers cannot be found");
				}
			}
			LogProc("glGenFramebuffers({0}, {1})", n, framebuffers);
		}

		/// <summary>
		/// Binding for glGenFramebuffers function.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="framebuffers">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void GenFramebuffers(Int32 n, out UInt32 framebuffers) {
			unsafe {
				fixed (UInt32* fp_framebuffers = &framebuffers)
				{
					if      (Delegates.pglGenFramebuffers != null)
						Delegates.pglGenFramebuffers(n, fp_framebuffers);
					else
						throw new InvalidOperationException("binding point GenFramebuffers cannot be found");
				}
			}
			LogProc("glGenFramebuffers({0}, {1})", n, framebuffers);
		}
		
		/// <summary>
		/// Binding for glGenFramebuffers function.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="framebuffers">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void GenFramebuffers(Int32 n, UInt32* framebuffers) {
			unsafe {
				if      (Delegates.pglGenFramebuffers != null)
					Delegates.pglGenFramebuffers(n, framebuffers);
				else
					throw new InvalidOperationException("binding point GenFramebuffers cannot be found");
			}
			LogProc("glGenFramebuffers({0}, {1})", n, "framebuffers");
		}
		

		/// <summary>
		/// Binding for glGenLists function.
		/// </summary>
		/// <param name="range">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static UInt32 GenLists(Int32 range) {
			UInt32 retvalue;
			if      (Delegates.pglGenLists != null)
				retvalue = (Delegates.pglGenLists(range));
			else
				throw new InvalidOperationException("binding point GenLists cannot be found");
			LogProc("glGenLists({0}) = {1}", range, retvalue);
			return (retvalue);
		}

		/// <summary>
		/// Binding for glGenProgramPipelines function.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pipelines">
		/// A <see cref="T:System.UInt32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void GenProgramPipelines(Int32 n, [Out] UInt32[] pipelines) {
			unsafe {
				fixed (UInt32* fp_pipelines = pipelines)
				{
					if      (Delegates.pglGenProgramPipelines != null)
						Delegates.pglGenProgramPipelines(n, fp_pipelines);
					else
						throw new InvalidOperationException("binding point GenProgramPipelines cannot be found");
				}
			}
			LogProc("glGenProgramPipelines({0}, {1})", n, pipelines);
		}

		/// <summary>
		/// Binding for glGenProgramPipelines function.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pipelines">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void GenProgramPipelines(Int32 n, out UInt32 pipelines) {
			unsafe {
				fixed (UInt32* fp_pipelines = &pipelines)
				{
					if      (Delegates.pglGenProgramPipelines != null)
						Delegates.pglGenProgramPipelines(n, fp_pipelines);
					else
						throw new InvalidOperationException("binding point GenProgramPipelines cannot be found");
				}
			}
			LogProc("glGenProgramPipelines({0}, {1})", n, pipelines);
		}
		
		/// <summary>
		/// Binding for glGenProgramPipelines function.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pipelines">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void GenProgramPipelines(Int32 n, UInt32* pipelines) {
			unsafe {
				if      (Delegates.pglGenProgramPipelines != null)
					Delegates.pglGenProgramPipelines(n, pipelines);
				else
					throw new InvalidOperationException("binding point GenProgramPipelines cannot be found");
			}
			LogProc("glGenProgramPipelines({0}, {1})", n, "pipelines");
		}
		

		/// <summary>
		/// Binding for glGenQueries function.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="ids">
		/// A <see cref="T:System.UInt32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.5
		public static void GenQueries(Int32 n, [Out] UInt32[] ids) {
			unsafe {
				fixed (UInt32* fp_ids = ids)
				{
					if      (Delegates.pglGenQueries != null)
						Delegates.pglGenQueries(n, fp_ids);
					else
						throw new InvalidOperationException("binding point GenQueries cannot be found");
				}
			}
			LogProc("glGenQueries({0}, {1})", n, ids);
		}

		/// <summary>
		/// Binding for glGenQueries function.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="ids">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.5
		public static void GenQueries(Int32 n, out UInt32 ids) {
			unsafe {
				fixed (UInt32* fp_ids = &ids)
				{
					if      (Delegates.pglGenQueries != null)
						Delegates.pglGenQueries(n, fp_ids);
					else
						throw new InvalidOperationException("binding point GenQueries cannot be found");
				}
			}
			LogProc("glGenQueries({0}, {1})", n, ids);
		}
		
		/// <summary>
		/// Binding for glGenQueries function.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="ids">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.5
		public static void GenQueries(Int32 n, UInt32* ids) {
			unsafe {
				if      (Delegates.pglGenQueries != null)
					Delegates.pglGenQueries(n, ids);
				else
					throw new InvalidOperationException("binding point GenQueries cannot be found");
			}
			LogProc("glGenQueries({0}, {1})", n, "ids");
		}
		

		/// <summary>
		/// Binding for glGenRenderbuffers function.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="renderbuffers">
		/// A <see cref="T:System.UInt32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void GenRenderbuffer(Int32 n, [Out] UInt32[] renderbuffers) {
			unsafe {
				fixed (UInt32* fp_renderbuffers = renderbuffers)
				{
					if      (Delegates.pglGenRenderbuffers != null)
						Delegates.pglGenRenderbuffers(n, fp_renderbuffers);
					else
						throw new InvalidOperationException("binding point GenRenderbuffer cannot be found");
				}
			}
			LogProc("glGenRenderbuffers({0}, {1})", n, renderbuffers);
		}

		/// <summary>
		/// Binding for glGenRenderbuffers function.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="renderbuffers">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void GenRenderbuffer(Int32 n, out UInt32 renderbuffers) {
			unsafe {
				fixed (UInt32* fp_renderbuffers = &renderbuffers)
				{
					if      (Delegates.pglGenRenderbuffers != null)
						Delegates.pglGenRenderbuffers(n, fp_renderbuffers);
					else
						throw new InvalidOperationException("binding point GenRenderbuffer cannot be found");
				}
			}
			LogProc("glGenRenderbuffers({0}, {1})", n, renderbuffers);
		}
		
		/// <summary>
		/// Binding for glGenRenderbuffers function.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="renderbuffers">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void GenRenderbuffer(Int32 n, UInt32* renderbuffers) {
			unsafe {
				if      (Delegates.pglGenRenderbuffers != null)
					Delegates.pglGenRenderbuffers(n, renderbuffers);
				else
					throw new InvalidOperationException("binding point GenRenderbuffer cannot be found");
			}
			LogProc("glGenRenderbuffers({0}, {1})", n, "renderbuffers");
		}
		

		/// <summary>
		/// Binding for glGenSamplers function.
		/// </summary>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="samplers">
		/// A <see cref="T:System.UInt32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GenSamplers(Int32 count, [Out] UInt32[] samplers) {
			unsafe {
				fixed (UInt32* fp_samplers = samplers)
				{
					if      (Delegates.pglGenSamplers != null)
						Delegates.pglGenSamplers(count, fp_samplers);
					else
						throw new InvalidOperationException("binding point GenSamplers cannot be found");
				}
			}
			LogProc("glGenSamplers({0}, {1})", count, samplers);
		}

		/// <summary>
		/// Binding for glGenSamplers function.
		/// </summary>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="samplers">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GenSamplers(Int32 count, out UInt32 samplers) {
			unsafe {
				fixed (UInt32* fp_samplers = &samplers)
				{
					if      (Delegates.pglGenSamplers != null)
						Delegates.pglGenSamplers(count, fp_samplers);
					else
						throw new InvalidOperationException("binding point GenSamplers cannot be found");
				}
			}
			LogProc("glGenSamplers({0}, {1})", count, samplers);
		}
		
		/// <summary>
		/// Binding for glGenSamplers function.
		/// </summary>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="samplers">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GenSamplers(Int32 count, UInt32* samplers) {
			unsafe {
				if      (Delegates.pglGenSamplers != null)
					Delegates.pglGenSamplers(count, samplers);
				else
					throw new InvalidOperationException("binding point GenSamplers cannot be found");
			}
			LogProc("glGenSamplers({0}, {1})", count, "samplers");
		}
		

		/// <summary>
		/// Binding for glGenTextures function.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="textures">
		/// A <see cref="T:System.UInt32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void GenTextures(Int32 n, [Out] UInt32[] textures) {
			unsafe {
				fixed (UInt32* fp_textures = textures)
				{
					if      (Delegates.pglGenTextures != null)
						Delegates.pglGenTextures(n, fp_textures);
					else
						throw new InvalidOperationException("binding point GenTextures cannot be found");
				}
			}
			LogProc("glGenTextures({0}, {1})", n, textures);
		}

		/// <summary>
		/// Binding for glGenTextures function.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="textures">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void GenTextures(Int32 n, out UInt32 textures) {
			unsafe {
				fixed (UInt32* fp_textures = &textures)
				{
					if      (Delegates.pglGenTextures != null)
						Delegates.pglGenTextures(n, fp_textures);
					else
						throw new InvalidOperationException("binding point GenTextures cannot be found");
				}
			}
			LogProc("glGenTextures({0}, {1})", n, textures);
		}
		

		/// <summary>
		/// Binding for glGenTransformFeedbacks function.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="ids">
		/// A <see cref="T:System.UInt32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GenTransformFeedback(Int32 n, [Out] UInt32[] ids) {
			unsafe {
				fixed (UInt32* fp_ids = ids)
				{
					if      (Delegates.pglGenTransformFeedbacks != null)
						Delegates.pglGenTransformFeedbacks(n, fp_ids);
					else
						throw new InvalidOperationException("binding point GenTransformFeedback cannot be found");
				}
			}
			LogProc("glGenTransformFeedbacks({0}, {1})", n, ids);
		}

		/// <summary>
		/// Binding for glGenTransformFeedbacks function.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="ids">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GenTransformFeedback(Int32 n, out UInt32 ids) {
			unsafe {
				fixed (UInt32* fp_ids = &ids)
				{
					if      (Delegates.pglGenTransformFeedbacks != null)
						Delegates.pglGenTransformFeedbacks(n, fp_ids);
					else
						throw new InvalidOperationException("binding point GenTransformFeedback cannot be found");
				}
			}
			LogProc("glGenTransformFeedbacks({0}, {1})", n, ids);
		}
		
		/// <summary>
		/// Binding for glGenTransformFeedbacks function.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="ids">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GenTransformFeedback(Int32 n, UInt32* ids) {
			unsafe {
				if      (Delegates.pglGenTransformFeedbacks != null)
					Delegates.pglGenTransformFeedbacks(n, ids);
				else
					throw new InvalidOperationException("binding point GenTransformFeedback cannot be found");
			}
			LogProc("glGenTransformFeedbacks({0}, {1})", n, "ids");
		}
		

		/// <summary>
		/// Binding for glGenVertexArrays function.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="arrays">
		/// A <see cref="T:System.UInt32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void GenVertexArrays(Int32 n, [Out] UInt32[] arrays) {
			unsafe {
				fixed (UInt32* fp_arrays = arrays)
				{
					if      (Delegates.pglGenVertexArrays != null)
						Delegates.pglGenVertexArrays(n, fp_arrays);
					else
						throw new InvalidOperationException("binding point GenVertexArrays cannot be found");
				}
			}
			LogProc("glGenVertexArrays({0}, {1})", n, arrays);
		}

		/// <summary>
		/// Binding for glGenVertexArrays function.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="arrays">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void GenVertexArrays(Int32 n, out UInt32 arrays) {
			unsafe {
				fixed (UInt32* fp_arrays = &arrays)
				{
					if      (Delegates.pglGenVertexArrays != null)
						Delegates.pglGenVertexArrays(n, fp_arrays);
					else
						throw new InvalidOperationException("binding point GenVertexArrays cannot be found");
				}
			}
			LogProc("glGenVertexArrays({0}, {1})", n, arrays);
		}
		
		/// <summary>
		/// Binding for glGenVertexArrays function.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="arrays">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void GenVertexArrays(Int32 n, UInt32* arrays) {
			unsafe {
				if      (Delegates.pglGenVertexArrays != null)
					Delegates.pglGenVertexArrays(n, arrays);
				else
					throw new InvalidOperationException("binding point GenVertexArrays cannot be found");
			}
			LogProc("glGenVertexArrays({0}, {1})", n, "arrays");
		}
		

		/// <summary>
		/// Binding for glGetActiveAtomicCounterBufferiv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="bufferIndex">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 4.2
		public static void GetActiveAtomicCounterBuffer(UInt32 program, UInt32 bufferIndex, int pname, [Out] int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglGetActiveAtomicCounterBufferiv != null)
						Delegates.pglGetActiveAtomicCounterBufferiv(program, bufferIndex, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetActiveAtomicCounterBuffer cannot be found");
				}
			}
			LogProc("glGetActiveAtomicCounterBufferiv({0}, {1}, {2}, {3})", program, bufferIndex, pname, @params);
		}

		/// <summary>
		/// Binding for glGetActiveAtomicCounterBufferiv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="bufferIndex">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.2
		public static void GetActiveAtomicCounterBuffer(UInt32 program, UInt32 bufferIndex, int pname, out int @params) {
			unsafe {
				fixed (int* fp_params = &@params)
				{
					if      (Delegates.pglGetActiveAtomicCounterBufferiv != null)
						Delegates.pglGetActiveAtomicCounterBufferiv(program, bufferIndex, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetActiveAtomicCounterBuffer cannot be found");
				}
			}
			LogProc("glGetActiveAtomicCounterBufferiv({0}, {1}, {2}, {3})", program, bufferIndex, pname, @params);
		}
		
		/// <summary>
		/// Binding for glGetActiveAtomicCounterBufferiv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="bufferIndex">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.2
		public static void GetActiveAtomicCounterBuffer(UInt32 program, UInt32 bufferIndex, int pname, int* @params) {
			unsafe {
				if      (Delegates.pglGetActiveAtomicCounterBufferiv != null)
					Delegates.pglGetActiveAtomicCounterBufferiv(program, bufferIndex, pname, @params);
				else
					throw new InvalidOperationException("binding point GetActiveAtomicCounterBuffer cannot be found");
			}
			LogProc("glGetActiveAtomicCounterBufferiv({0}, {1}, {2}, {3})", program, bufferIndex, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetActiveAttrib function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="bufSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="length">
		/// A <see cref="T:System.Int32"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// <param name="size">
		/// A <see cref="T:System.Int32"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// <param name="name">
		/// A <see cref="T:System.Text.StringBuilder"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void GetActiveAttrib(UInt32 program, UInt32 index, Int32 bufSize, [Out] out Int32 length, [Out] out int size, [Out] out int type, [Out] StringBuilder name) {
			unsafe {
				fixed (Int32* fp_length = &length)
				fixed (int* fp_size = &size)
				fixed (int* fp_type = &type)
				{
					if      (Delegates.pglGetActiveAttrib != null)
						Delegates.pglGetActiveAttrib(program, index, bufSize, fp_length, fp_size, fp_type, name);
					else
						throw new InvalidOperationException("binding point GetActiveAttrib cannot be found");
				}
			}
			LogProc("glGetActiveAttrib({0}, {1}, {2}, {3}, {4}, {5}, {6})", program, index, bufSize, length, size, type, name);
		}

		/// <summary>
		/// Binding for glGetActiveSubroutineName function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="shadertype">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="bufsize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="length">
		/// A <see cref="T:System.Int32"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// <param name="name">
		/// A <see cref="T:System.Text.StringBuilder"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetActiveSubroutineName(UInt32 program, int shadertype, UInt32 index, Int32 bufsize, [Out] out Int32 length, [Out] StringBuilder name) {
			unsafe {
				fixed (Int32* fp_length = &length)
				{
					if      (Delegates.pglGetActiveSubroutineName != null)
						Delegates.pglGetActiveSubroutineName(program, shadertype, index, bufsize, fp_length, name);
					else
						throw new InvalidOperationException("binding point GetActiveSubroutineName cannot be found");
				}
			}
			LogProc("glGetActiveSubroutineName({0}, {1}, {2}, {3}, {4}, {5})", program, shadertype, index, bufsize, length, name);
		}

		/// <summary>
		/// Binding for glGetActiveSubroutineUniformiv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="shadertype">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="values">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetActiveSubroutineUniform(UInt32 program, int shadertype, UInt32 index, int pname, [Out] int[] values) {
			unsafe {
				fixed (int* fp_values = values)
				{
					if      (Delegates.pglGetActiveSubroutineUniformiv != null)
						Delegates.pglGetActiveSubroutineUniformiv(program, shadertype, index, pname, fp_values);
					else
						throw new InvalidOperationException("binding point GetActiveSubroutineUniform cannot be found");
				}
			}
			LogProc("glGetActiveSubroutineUniformiv({0}, {1}, {2}, {3}, {4})", program, shadertype, index, pname, values);
		}

		/// <summary>
		/// Binding for glGetActiveSubroutineUniformiv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="shadertype">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="values">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetActiveSubroutineUniform(UInt32 program, int shadertype, UInt32 index, int pname, out int values) {
			unsafe {
				fixed (int* fp_values = &values)
				{
					if      (Delegates.pglGetActiveSubroutineUniformiv != null)
						Delegates.pglGetActiveSubroutineUniformiv(program, shadertype, index, pname, fp_values);
					else
						throw new InvalidOperationException("binding point GetActiveSubroutineUniform cannot be found");
				}
			}
			LogProc("glGetActiveSubroutineUniformiv({0}, {1}, {2}, {3}, {4})", program, shadertype, index, pname, values);
		}
		
		/// <summary>
		/// Binding for glGetActiveSubroutineUniformiv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="shadertype">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="values">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetActiveSubroutineUniform(UInt32 program, int shadertype, UInt32 index, int pname, int* values) {
			unsafe {
				if      (Delegates.pglGetActiveSubroutineUniformiv != null)
					Delegates.pglGetActiveSubroutineUniformiv(program, shadertype, index, pname, values);
				else
					throw new InvalidOperationException("binding point GetActiveSubroutineUniform cannot be found");
			}
			LogProc("glGetActiveSubroutineUniformiv({0}, {1}, {2}, {3}, {4})", program, shadertype, index, pname, "values");
		}
		

		/// <summary>
		/// Binding for glGetActiveSubroutineUniformName function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="shadertype">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="bufsize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="length">
		/// A <see cref="T:System.Int32"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// <param name="name">
		/// A <see cref="T:System.Text.StringBuilder"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetActiveSubroutineUniformName(UInt32 program, int shadertype, UInt32 index, Int32 bufsize, [Out] out Int32 length, [Out] StringBuilder name) {
			unsafe {
				fixed (Int32* fp_length = &length)
				{
					if      (Delegates.pglGetActiveSubroutineUniformName != null)
						Delegates.pglGetActiveSubroutineUniformName(program, shadertype, index, bufsize, fp_length, name);
					else
						throw new InvalidOperationException("binding point GetActiveSubroutineUniformName cannot be found");
				}
			}
			LogProc("glGetActiveSubroutineUniformName({0}, {1}, {2}, {3}, {4}, {5})", program, shadertype, index, bufsize, length, name);
		}

		/// <summary>
		/// Binding for glGetActiveUniform function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="bufSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="length">
		/// A <see cref="T:System.Int32"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// <param name="size">
		/// A <see cref="T:System.Int32"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// <param name="name">
		/// A <see cref="T:System.Text.StringBuilder"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void GetActiveUniform(UInt32 program, UInt32 index, Int32 bufSize, [Out] out Int32 length, [Out] out int size, [Out] out int type, StringBuilder name) {
			unsafe {
				fixed (Int32* fp_length = &length)
				fixed (int* fp_size = &size)
				fixed (int* fp_type = &type)
				{
					if      (Delegates.pglGetActiveUniform != null)
						Delegates.pglGetActiveUniform(program, index, bufSize, fp_length, fp_size, fp_type, name);
					else
						throw new InvalidOperationException("binding point GetActiveUniform cannot be found");
				}
			}
			LogProc("glGetActiveUniform({0}, {1}, {2}, {3}, {4}, {5}, {6})", program, index, bufSize, length, size, type, name);
		}

		/// <summary>
		/// Binding for glGetActiveUniformBlockiv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="uniformBlockIndex">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void GetActiveUniformBlock(UInt32 program, UInt32 uniformBlockIndex, int pname, [Out] int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglGetActiveUniformBlockiv != null)
						Delegates.pglGetActiveUniformBlockiv(program, uniformBlockIndex, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetActiveUniformBlock cannot be found");
				}
			}
			LogProc("glGetActiveUniformBlockiv({0}, {1}, {2}, {3})", program, uniformBlockIndex, pname, @params);
		}

		/// <summary>
		/// Binding for glGetActiveUniformBlockiv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="uniformBlockIndex">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void GetActiveUniformBlock(UInt32 program, UInt32 uniformBlockIndex, int pname, out int @params) {
			unsafe {
				fixed (int* fp_params = &@params)
				{
					if      (Delegates.pglGetActiveUniformBlockiv != null)
						Delegates.pglGetActiveUniformBlockiv(program, uniformBlockIndex, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetActiveUniformBlock cannot be found");
				}
			}
			LogProc("glGetActiveUniformBlockiv({0}, {1}, {2}, {3})", program, uniformBlockIndex, pname, @params);
		}
		
		/// <summary>
		/// Binding for glGetActiveUniformBlockiv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="uniformBlockIndex">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void GetActiveUniformBlock(UInt32 program, UInt32 uniformBlockIndex, int pname, int* @params) {
			unsafe {
				if      (Delegates.pglGetActiveUniformBlockiv != null)
					Delegates.pglGetActiveUniformBlockiv(program, uniformBlockIndex, pname, @params);
				else
					throw new InvalidOperationException("binding point GetActiveUniformBlock cannot be found");
			}
			LogProc("glGetActiveUniformBlockiv({0}, {1}, {2}, {3})", program, uniformBlockIndex, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetActiveUniformBlockName function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="uniformBlockIndex">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="bufSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="length">
		/// A <see cref="T:System.Int32"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// <param name="uniformBlockName">
		/// A <see cref="T:System.Text.StringBuilder"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void GetActiveUniformBlockName(UInt32 program, UInt32 uniformBlockIndex, Int32 bufSize, [Out] out Int32 length, [Out] StringBuilder uniformBlockName) {
			unsafe {
				fixed (Int32* fp_length = &length)
				{
					if      (Delegates.pglGetActiveUniformBlockName != null)
						Delegates.pglGetActiveUniformBlockName(program, uniformBlockIndex, bufSize, fp_length, uniformBlockName);
					else
						throw new InvalidOperationException("binding point GetActiveUniformBlockName cannot be found");
				}
			}
			LogProc("glGetActiveUniformBlockName({0}, {1}, {2}, {3}, {4})", program, uniformBlockIndex, bufSize, length, uniformBlockName);
		}

		/// <summary>
		/// Binding for glGetActiveUniformName function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="uniformIndex">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="bufSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="length">
		/// A <see cref="T:System.Int32"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// <param name="uniformName">
		/// A <see cref="T:System.Text.StringBuilder"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void GetActiveUniformName(UInt32 program, UInt32 uniformIndex, Int32 bufSize, [Out] out Int32 length, [Out] StringBuilder uniformName) {
			unsafe {
				fixed (Int32* fp_length = &length)
				{
					if      (Delegates.pglGetActiveUniformName != null)
						Delegates.pglGetActiveUniformName(program, uniformIndex, bufSize, fp_length, uniformName);
					else
						throw new InvalidOperationException("binding point GetActiveUniformName cannot be found");
				}
			}
			LogProc("glGetActiveUniformName({0}, {1}, {2}, {3}, {4})", program, uniformIndex, bufSize, length, uniformName);
		}

		/// <summary>
		/// Binding for glGetActiveUniformsiv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="uniformCount">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="uniformIndices">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void GetActiveUniforms(UInt32 program, Int32 uniformCount, UInt32[] uniformIndices, int pname, [Out] int[] @params) {
			unsafe {
				fixed (UInt32* fp_uniformIndices = uniformIndices)
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglGetActiveUniformsiv != null)
						Delegates.pglGetActiveUniformsiv(program, uniformCount, fp_uniformIndices, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetActiveUniforms cannot be found");
				}
			}
			LogProc("glGetActiveUniformsiv({0}, {1}, {2}, {3}, {4})", program, uniformCount, uniformIndices, pname, @params);
		}

		/// <summary>
		/// Binding for glGetActiveUniformsiv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="uniformCount">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="uniformIndices">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void GetActiveUniforms(UInt32 program, Int32 uniformCount, UInt32[] uniformIndices, int pname, out int @params) {
			unsafe {
				fixed (UInt32* fp_uniformIndices = uniformIndices)
				fixed (int* fp_params = &@params)
				{
					if      (Delegates.pglGetActiveUniformsiv != null)
						Delegates.pglGetActiveUniformsiv(program, uniformCount, fp_uniformIndices, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetActiveUniforms cannot be found");
				}
			}
			LogProc("glGetActiveUniformsiv({0}, {1}, {2}, {3}, {4})", program, uniformCount, uniformIndices, pname, @params);
		}
		
		/// <summary>
		/// Binding for glGetActiveUniformsiv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="uniformCount">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="uniformIndices">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void GetActiveUniforms(UInt32 program, Int32 uniformCount, UInt32[] uniformIndices, int pname, int* @params) {
			unsafe {
				fixed (UInt32* fp_uniformIndices = uniformIndices)
				{
					if      (Delegates.pglGetActiveUniformsiv != null)
						Delegates.pglGetActiveUniformsiv(program, uniformCount, fp_uniformIndices, pname, @params);
					else
						throw new InvalidOperationException("binding point GetActiveUniforms cannot be found");
				}
			}
			LogProc("glGetActiveUniformsiv({0}, {1}, {2}, {3}, {4})", program, uniformCount, uniformIndices, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetAttachedShaders function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="maxCount">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// <param name="obj">
		/// A <see cref="T:System.UInt32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void GetAttachedShaders(UInt32 program, Int32 maxCount, [Out] out Int32 count, [Out] UInt32[] obj) {
			unsafe {
				fixed (Int32* fp_count = &count)
				fixed (UInt32* fp_obj = obj)
				{
					if      (Delegates.pglGetAttachedShaders != null)
						Delegates.pglGetAttachedShaders(program, maxCount, fp_count, fp_obj);
					else
						throw new InvalidOperationException("binding point GetAttachedShaders cannot be found");
				}
			}
			LogProc("glGetAttachedShaders({0}, {1}, {2}, {3})", program, maxCount, count, obj);
		}

		/// <summary>
		/// Binding for glGetAttachedShaders function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="maxCount">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// <param name="obj">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void GetAttachedShaders(UInt32 program, Int32 maxCount, [Out] out Int32 count, out UInt32 obj) {
			unsafe {
				fixed (Int32* fp_count = &count)
				fixed (UInt32* fp_obj = &obj)
				{
					if      (Delegates.pglGetAttachedShaders != null)
						Delegates.pglGetAttachedShaders(program, maxCount, fp_count, fp_obj);
					else
						throw new InvalidOperationException("binding point GetAttachedShaders cannot be found");
				}
			}
			LogProc("glGetAttachedShaders({0}, {1}, {2}, {3})", program, maxCount, count, obj);
		}
		
		/// <summary>
		/// Binding for glGetAttachedShaders function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="maxCount">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// <param name="obj">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void GetAttachedShaders(UInt32 program, Int32 maxCount, [Out] out Int32 count, UInt32* obj) {
			unsafe {
				fixed (Int32* fp_count = &count)
				{
					if      (Delegates.pglGetAttachedShaders != null)
						Delegates.pglGetAttachedShaders(program, maxCount, fp_count, obj);
					else
						throw new InvalidOperationException("binding point GetAttachedShaders cannot be found");
				}
			}
			LogProc("glGetAttachedShaders({0}, {1}, {2}, {3})", program, maxCount, count, "obj");
		}
		

		/// <summary>
		/// Binding for glGetAttribLocation function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="name">
		/// A <see cref="T:System.String"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static int GetAttribLocation(UInt32 program, string name) {
			int retvalue;
			if      (Delegates.pglGetAttribLocation != null)
				retvalue = (Delegates.pglGetAttribLocation(program, name));
			else
				throw new InvalidOperationException("binding point GetAttribLocation cannot be found");
			LogProc("glGetAttribLocation({0}, {1}) = {2}", program, name, retvalue);
			return (retvalue);
		}

		/// <summary>
		/// Binding for glGetBooleani_v function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="data">
		/// A <see cref="T:System.Boolean*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void GetBooleani_v(int target, UInt32 index, [Out] bool[] data) {
			unsafe {
				fixed (bool* fp_data = data)
				{
					if      (Delegates.pglGetBooleani_v != null)
						Delegates.pglGetBooleani_v(target, index, fp_data);
					else
						throw new InvalidOperationException("binding point GetBooleani_v cannot be found");
				}
			}
			LogProc("glGetBooleani_v({0}, {1}, {2})", target, index, data);
		}

		/// <summary>
		/// Binding for glGetBooleani_v function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="data">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void GetBooleani_v(int target, UInt32 index, out bool data) {
			unsafe {
				fixed (bool* fp_data = &data)
				{
					if      (Delegates.pglGetBooleani_v != null)
						Delegates.pglGetBooleani_v(target, index, fp_data);
					else
						throw new InvalidOperationException("binding point GetBooleani_v cannot be found");
				}
			}
			LogProc("glGetBooleani_v({0}, {1}, {2})", target, index, data);
		}
		

		/// <summary>
		/// Binding for glGetBooleanv function.
		/// </summary>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Boolean*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void Get(int pname, [Out] bool[] @params) {
			unsafe {
				fixed (bool* fp_params = @params)
				{
					if      (Delegates.pglGetBooleanv != null)
						Delegates.pglGetBooleanv(pname, fp_params);
					else
						throw new InvalidOperationException("binding point Get cannot be found");
				}
			}
			LogProc("glGetBooleanv({0}, {1})", pname, @params);
		}

		/// <summary>
		/// Binding for glGetBooleanv function.
		/// </summary>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void Get(int pname, out bool @params) {
			unsafe {
				fixed (bool* fp_params = &@params)
				{
					if      (Delegates.pglGetBooleanv != null)
						Delegates.pglGetBooleanv(pname, fp_params);
					else
						throw new InvalidOperationException("binding point Get cannot be found");
				}
			}
			LogProc("glGetBooleanv({0}, {1})", pname, @params);
		}
		

		/// <summary>
		/// Binding for glGetBufferParameteri64v function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int64*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 3.2
		public static void GetBufferParameter(int target, int pname, [Out] Int64[] @params) {
			unsafe {
				fixed (Int64* fp_params = @params)
				{
					if      (Delegates.pglGetBufferParameteri64v != null)
						Delegates.pglGetBufferParameteri64v(target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetBufferParameter cannot be found");
				}
			}
			LogProc("glGetBufferParameteri64v({0}, {1}, {2})", target, pname, @params);
		}

		/// <summary>
		/// Binding for glGetBufferParameteriv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.5
		public static void GetBufferParameter(int target, int pname, [Out] int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglGetBufferParameteriv != null)
						Delegates.pglGetBufferParameteriv(target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetBufferParameter cannot be found");
				}
			}
			LogProc("glGetBufferParameteriv({0}, {1}, {2})", target, pname, @params);
		}

		/// <summary>
		/// Binding for glGetBufferParameteriv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.5
		public static void GetBufferParameter(int target, int pname, int* @params) {
			unsafe {
				if      (Delegates.pglGetBufferParameteriv != null)
					Delegates.pglGetBufferParameteriv(target, pname, @params);
				else
					throw new InvalidOperationException("binding point GetBufferParameter cannot be found");
			}
			LogProc("glGetBufferParameteriv({0}, {1}, {2})", target, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetBufferPointerv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.IntPtr"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.5
		public static void GetBufferPointer(int target, int pname, [Out] out IntPtr @params) {
			unsafe {
				fixed (IntPtr* fp_params = &@params)
				{
					if      (Delegates.pglGetBufferPointerv != null)
						Delegates.pglGetBufferPointerv(target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetBufferPointer cannot be found");
				}
			}
			LogProc("glGetBufferPointerv({0}, {1}, {2})", target, pname, @params);
		}

		/// <summary>
		/// Binding for glGetBufferSubData function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="offset">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// <param name="size">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="data">
		/// A <see cref="T:System.IntPtr"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.5
		public static void GetBufferSubData(int target, IntPtr offset, UInt32 size, [Out] object data) {
			GCHandle pp_data = GCHandle.Alloc(data, GCHandleType.Pinned);
			try {
				if      (Delegates.pglGetBufferSubData != null)
					Delegates.pglGetBufferSubData(target, offset, size, pp_data.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point GetBufferSubData cannot be found");
			} finally {
				pp_data.Free();
			}
			LogProc("glGetBufferSubData({0}, {1}, {2}, {3})", target, offset, size, data);
		}

		/// <summary>
		/// Binding for glGetClipPlane function.
		/// </summary>
		/// <param name="plane">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="equation">
		/// A <see cref="T:System.Double*"/>.
		/// This parameter holds data returned from function.
		/// This array parameter shall have a fixed length of 4 element(s).
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void GetClipPlane(int plane, [Out] double[] equation) {
			unsafe {
				fixed (double* fp_equation = equation)
				{
					if      (Delegates.pglGetClipPlane != null)
						Delegates.pglGetClipPlane(plane, fp_equation);
					else
						throw new InvalidOperationException("binding point GetClipPlane cannot be found");
				}
			}
			LogProc("glGetClipPlane({0}, {1})", plane, equation);
		}

		/// <summary>
		/// Binding for glGetClipPlane function.
		/// </summary>
		/// <param name="plane">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="equation">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void GetClipPlane(int plane, double* equation) {
			unsafe {
				if      (Delegates.pglGetClipPlane != null)
					Delegates.pglGetClipPlane(plane, equation);
				else
					throw new InvalidOperationException("binding point GetClipPlane cannot be found");
			}
			LogProc("glGetClipPlane({0}, {1})", plane, "equation");
		}
		

		/// <summary>
		/// Binding for glGetColorTable function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="format">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="table">
		/// A <see cref="T:System.IntPtr"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		/// @deprecated
		public static void GetColorTable(int target, int format, int type, [Out] object table) {
			GCHandle pp_table = GCHandle.Alloc(table, GCHandleType.Pinned);
			try {
				if      (Delegates.pglGetColorTable != null)
					Delegates.pglGetColorTable(target, format, type, pp_table.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point GetColorTable cannot be found");
			} finally {
				pp_table.Free();
			}
			LogProc("glGetColorTable({0}, {1}, {2}, {3})", target, format, type, table);
		}

		/// <summary>
		/// Binding for glGetColorTableParameterfv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		/// @deprecated
		public static void GetColorTableParameter(int target, int pname, [Out] float[] @params) {
			unsafe {
				fixed (float* fp_params = @params)
				{
					if      (Delegates.pglGetColorTableParameterfv != null)
						Delegates.pglGetColorTableParameterfv(target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetColorTableParameter cannot be found");
				}
			}
			LogProc("glGetColorTableParameterfv({0}, {1}, {2})", target, pname, @params);
		}

		/// <summary>
		/// Binding for glGetColorTableParameterfv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		/// @deprecated
		public static void GetColorTableParameter(int target, int pname, float* @params) {
			unsafe {
				if      (Delegates.pglGetColorTableParameterfv != null)
					Delegates.pglGetColorTableParameterfv(target, pname, @params);
				else
					throw new InvalidOperationException("binding point GetColorTableParameter cannot be found");
			}
			LogProc("glGetColorTableParameterfv({0}, {1}, {2})", target, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetColorTableParameteriv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		/// @deprecated
		public static void GetColorTableParameter(int target, int pname, [Out] int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglGetColorTableParameteriv != null)
						Delegates.pglGetColorTableParameteriv(target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetColorTableParameter cannot be found");
				}
			}
			LogProc("glGetColorTableParameteriv({0}, {1}, {2})", target, pname, @params);
		}

		/// <summary>
		/// Binding for glGetColorTableParameteriv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		/// @deprecated
		public static void GetColorTableParameter(int target, int pname, int* @params) {
			unsafe {
				if      (Delegates.pglGetColorTableParameteriv != null)
					Delegates.pglGetColorTableParameteriv(target, pname, @params);
				else
					throw new InvalidOperationException("binding point GetColorTableParameter cannot be found");
			}
			LogProc("glGetColorTableParameteriv({0}, {1}, {2})", target, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetCompressedTexImage function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="img">
		/// A <see cref="T:System.IntPtr"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void GetCompressedTexImage(int target, int level, [Out] object img) {
			GCHandle pp_img = GCHandle.Alloc(img, GCHandleType.Pinned);
			try {
				if      (Delegates.pglGetCompressedTexImage != null)
					Delegates.pglGetCompressedTexImage(target, level, pp_img.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point GetCompressedTexImage cannot be found");
			} finally {
				pp_img.Free();
			}
			LogProc("glGetCompressedTexImage({0}, {1}, {2})", target, level, img);
		}

		/// <summary>
		/// Binding for glGetConvolutionFilter function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="format">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="image">
		/// A <see cref="T:System.IntPtr"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		/// @deprecated
		public static void GetConvolutionFilter(int target, int format, int type, [Out] object image) {
			GCHandle pp_image = GCHandle.Alloc(image, GCHandleType.Pinned);
			try {
				if      (Delegates.pglGetConvolutionFilter != null)
					Delegates.pglGetConvolutionFilter(target, format, type, pp_image.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point GetConvolutionFilter cannot be found");
			} finally {
				pp_image.Free();
			}
			LogProc("glGetConvolutionFilter({0}, {1}, {2}, {3})", target, format, type, image);
		}

		/// <summary>
		/// Binding for glGetConvolutionParameterfv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		/// @deprecated
		public static void GetConvolutionParameter(int target, int pname, [Out] float[] @params) {
			unsafe {
				fixed (float* fp_params = @params)
				{
					if      (Delegates.pglGetConvolutionParameterfv != null)
						Delegates.pglGetConvolutionParameterfv(target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetConvolutionParameter cannot be found");
				}
			}
			LogProc("glGetConvolutionParameterfv({0}, {1}, {2})", target, pname, @params);
		}

		/// <summary>
		/// Binding for glGetConvolutionParameterfv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		/// @deprecated
		public static void GetConvolutionParameter(int target, int pname, float* @params) {
			unsafe {
				if      (Delegates.pglGetConvolutionParameterfv != null)
					Delegates.pglGetConvolutionParameterfv(target, pname, @params);
				else
					throw new InvalidOperationException("binding point GetConvolutionParameter cannot be found");
			}
			LogProc("glGetConvolutionParameterfv({0}, {1}, {2})", target, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetConvolutionParameteriv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		/// @deprecated
		public static void GetConvolutionParameter(int target, int pname, [Out] int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglGetConvolutionParameteriv != null)
						Delegates.pglGetConvolutionParameteriv(target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetConvolutionParameter cannot be found");
				}
			}
			LogProc("glGetConvolutionParameteriv({0}, {1}, {2})", target, pname, @params);
		}

		/// <summary>
		/// Binding for glGetConvolutionParameteriv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		/// @deprecated
		public static void GetConvolutionParameter(int target, int pname, int* @params) {
			unsafe {
				if      (Delegates.pglGetConvolutionParameteriv != null)
					Delegates.pglGetConvolutionParameteriv(target, pname, @params);
				else
					throw new InvalidOperationException("binding point GetConvolutionParameter cannot be found");
			}
			LogProc("glGetConvolutionParameteriv({0}, {1}, {2})", target, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetDoublei_v function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="data">
		/// A <see cref="T:System.Double*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void GetDoublei_v(int target, UInt32 index, [Out] double[] data) {
			unsafe {
				fixed (double* fp_data = data)
				{
					if      (Delegates.pglGetDoublei_v != null)
						Delegates.pglGetDoublei_v(target, index, fp_data);
					else
						throw new InvalidOperationException("binding point GetDoublei_v cannot be found");
				}
			}
			LogProc("glGetDoublei_v({0}, {1}, {2})", target, index, data);
		}

		/// <summary>
		/// Binding for glGetDoublei_v function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="data">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void GetDoublei_v(int target, UInt32 index, out double data) {
			unsafe {
				fixed (double* fp_data = &data)
				{
					if      (Delegates.pglGetDoublei_v != null)
						Delegates.pglGetDoublei_v(target, index, fp_data);
					else
						throw new InvalidOperationException("binding point GetDoublei_v cannot be found");
				}
			}
			LogProc("glGetDoublei_v({0}, {1}, {2})", target, index, data);
		}
		
		/// <summary>
		/// Binding for glGetDoublei_v function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="data">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void GetDoublei_v(int target, UInt32 index, double* data) {
			unsafe {
				if      (Delegates.pglGetDoublei_v != null)
					Delegates.pglGetDoublei_v(target, index, data);
				else
					throw new InvalidOperationException("binding point GetDoublei_v cannot be found");
			}
			LogProc("glGetDoublei_v({0}, {1}, {2})", target, index, "data");
		}
		

		/// <summary>
		/// Binding for glGetDoublev function.
		/// </summary>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Double*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void Get(int pname, [Out] double[] @params) {
			unsafe {
				fixed (double* fp_params = @params)
				{
					if      (Delegates.pglGetDoublev != null)
						Delegates.pglGetDoublev(pname, fp_params);
					else
						throw new InvalidOperationException("binding point Get cannot be found");
				}
			}
			LogProc("glGetDoublev({0}, {1})", pname, @params);
		}

		/// <summary>
		/// Binding for glGetDoublev function.
		/// </summary>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void Get(int pname, out double @params) {
			unsafe {
				fixed (double* fp_params = &@params)
				{
					if      (Delegates.pglGetDoublev != null)
						Delegates.pglGetDoublev(pname, fp_params);
					else
						throw new InvalidOperationException("binding point Get cannot be found");
				}
			}
			LogProc("glGetDoublev({0}, {1})", pname, @params);
		}
		
		/// <summary>
		/// Binding for glGetDoublev function.
		/// </summary>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void Get(int pname, double* @params) {
			unsafe {
				if      (Delegates.pglGetDoublev != null)
					Delegates.pglGetDoublev(pname, @params);
				else
					throw new InvalidOperationException("binding point Get cannot be found");
			}
			LogProc("glGetDoublev({0}, {1})", pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetError function.
		/// </summary>
		/// @note This routine is available from OpenGL 1.0
		public static int GetError() {
			int retvalue;
			if      (Delegates.pglGetError != null)
				retvalue = (Delegates.pglGetError());
			else
				throw new InvalidOperationException("binding point GetError cannot be found");
			LogProc("glGetError()");
			return (retvalue);
		}

		/// <summary>
		/// Binding for glGetFloati_v function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="data">
		/// A <see cref="T:System.Single*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void GetFloati_v(int target, UInt32 index, [Out] float[] data) {
			unsafe {
				fixed (float* fp_data = data)
				{
					if      (Delegates.pglGetFloati_v != null)
						Delegates.pglGetFloati_v(target, index, fp_data);
					else
						throw new InvalidOperationException("binding point GetFloati_v cannot be found");
				}
			}
			LogProc("glGetFloati_v({0}, {1}, {2})", target, index, data);
		}

		/// <summary>
		/// Binding for glGetFloati_v function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="data">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void GetFloati_v(int target, UInt32 index, out float data) {
			unsafe {
				fixed (float* fp_data = &data)
				{
					if      (Delegates.pglGetFloati_v != null)
						Delegates.pglGetFloati_v(target, index, fp_data);
					else
						throw new InvalidOperationException("binding point GetFloati_v cannot be found");
				}
			}
			LogProc("glGetFloati_v({0}, {1}, {2})", target, index, data);
		}
		
		/// <summary>
		/// Binding for glGetFloati_v function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="data">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void GetFloati_v(int target, UInt32 index, float* data) {
			unsafe {
				if      (Delegates.pglGetFloati_v != null)
					Delegates.pglGetFloati_v(target, index, data);
				else
					throw new InvalidOperationException("binding point GetFloati_v cannot be found");
			}
			LogProc("glGetFloati_v({0}, {1}, {2})", target, index, "data");
		}
		

		/// <summary>
		/// Binding for glGetFloatv function.
		/// </summary>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void Get(int pname, [Out] float[] @params) {
			unsafe {
				fixed (float* fp_params = @params)
				{
					if      (Delegates.pglGetFloatv != null)
						Delegates.pglGetFloatv(pname, fp_params);
					else
						throw new InvalidOperationException("binding point Get cannot be found");
				}
			}
			LogProc("glGetFloatv({0}, {1})", pname, @params);
		}

		/// <summary>
		/// Binding for glGetFloatv function.
		/// </summary>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void Get(int pname, out float @params) {
			unsafe {
				fixed (float* fp_params = &@params)
				{
					if      (Delegates.pglGetFloatv != null)
						Delegates.pglGetFloatv(pname, fp_params);
					else
						throw new InvalidOperationException("binding point Get cannot be found");
				}
			}
			LogProc("glGetFloatv({0}, {1})", pname, @params);
		}
		
		/// <summary>
		/// Binding for glGetFloatv function.
		/// </summary>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void Get(int pname, float* @params) {
			unsafe {
				if      (Delegates.pglGetFloatv != null)
					Delegates.pglGetFloatv(pname, @params);
				else
					throw new InvalidOperationException("binding point Get cannot be found");
			}
			LogProc("glGetFloatv({0}, {1})", pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetFragDataIndex function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="name">
		/// A <see cref="T:System.String"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static int GetFragDataIndex(UInt32 program, string name) {
			int retvalue;
			if      (Delegates.pglGetFragDataIndex != null)
				retvalue = (Delegates.pglGetFragDataIndex(program, name));
			else
				throw new InvalidOperationException("binding point GetFragDataIndex cannot be found");
			LogProc("glGetFragDataIndex({0}, {1}) = {2}", program, name, retvalue);
			return (retvalue);
		}

		/// <summary>
		/// Binding for glGetFragDataLocation function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="name">
		/// A <see cref="T:System.String"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static int GetFragDataLocation(UInt32 program, string name) {
			int retvalue;
			if      (Delegates.pglGetFragDataLocation != null)
				retvalue = (Delegates.pglGetFragDataLocation(program, name));
			else
				throw new InvalidOperationException("binding point GetFragDataLocation cannot be found");
			LogProc("glGetFragDataLocation({0}, {1}) = {2}", program, name, retvalue);
			return (retvalue);
		}

		/// <summary>
		/// Binding for glGetFramebufferAttachmentParameteriv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="attachment">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void GetFramebufferAttachmentParameter(int target, int attachment, int pname, [Out] int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglGetFramebufferAttachmentParameteriv != null)
						Delegates.pglGetFramebufferAttachmentParameteriv(target, attachment, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetFramebufferAttachmentParameter cannot be found");
				}
			}
			LogProc("glGetFramebufferAttachmentParameteriv({0}, {1}, {2}, {3})", target, attachment, pname, @params);
		}

		/// <summary>
		/// Binding for glGetFramebufferAttachmentParameteriv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="attachment">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void GetFramebufferAttachmentParameter(int target, int attachment, int pname, out int @params) {
			unsafe {
				fixed (int* fp_params = &@params)
				{
					if      (Delegates.pglGetFramebufferAttachmentParameteriv != null)
						Delegates.pglGetFramebufferAttachmentParameteriv(target, attachment, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetFramebufferAttachmentParameter cannot be found");
				}
			}
			LogProc("glGetFramebufferAttachmentParameteriv({0}, {1}, {2}, {3})", target, attachment, pname, @params);
		}
		
		/// <summary>
		/// Binding for glGetFramebufferAttachmentParameteriv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="attachment">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void GetFramebufferAttachmentParameter(int target, int attachment, int pname, int* @params) {
			unsafe {
				if      (Delegates.pglGetFramebufferAttachmentParameteriv != null)
					Delegates.pglGetFramebufferAttachmentParameteriv(target, attachment, pname, @params);
				else
					throw new InvalidOperationException("binding point GetFramebufferAttachmentParameter cannot be found");
			}
			LogProc("glGetFramebufferAttachmentParameteriv({0}, {1}, {2}, {3})", target, attachment, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetHistogram function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="reset">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="format">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="values">
		/// A <see cref="T:System.IntPtr"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		/// @deprecated
		public static void GetHistogram(int target, bool reset, int format, int type, [Out] object values) {
			GCHandle pp_values = GCHandle.Alloc(values, GCHandleType.Pinned);
			try {
				if      (Delegates.pglGetHistogram != null)
					Delegates.pglGetHistogram(target, reset, format, type, pp_values.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point GetHistogram cannot be found");
			} finally {
				pp_values.Free();
			}
			LogProc("glGetHistogram({0}, {1}, {2}, {3}, {4})", target, reset, format, type, values);
		}

		/// <summary>
		/// Binding for glGetHistogramParameterfv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		/// @deprecated
		public static void GetHistogramParameter(int target, int pname, [Out] float[] @params) {
			unsafe {
				fixed (float* fp_params = @params)
				{
					if      (Delegates.pglGetHistogramParameterfv != null)
						Delegates.pglGetHistogramParameterfv(target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetHistogramParameter cannot be found");
				}
			}
			LogProc("glGetHistogramParameterfv({0}, {1}, {2})", target, pname, @params);
		}

		/// <summary>
		/// Binding for glGetHistogramParameterfv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		/// @deprecated
		public static void GetHistogramParameter(int target, int pname, float* @params) {
			unsafe {
				if      (Delegates.pglGetHistogramParameterfv != null)
					Delegates.pglGetHistogramParameterfv(target, pname, @params);
				else
					throw new InvalidOperationException("binding point GetHistogramParameter cannot be found");
			}
			LogProc("glGetHistogramParameterfv({0}, {1}, {2})", target, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetHistogramParameteriv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		/// @deprecated
		public static void GetHistogramParameter(int target, int pname, [Out] int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglGetHistogramParameteriv != null)
						Delegates.pglGetHistogramParameteriv(target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetHistogramParameter cannot be found");
				}
			}
			LogProc("glGetHistogramParameteriv({0}, {1}, {2})", target, pname, @params);
		}

		/// <summary>
		/// Binding for glGetHistogramParameteriv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		/// @deprecated
		public static void GetHistogramParameter(int target, int pname, int* @params) {
			unsafe {
				if      (Delegates.pglGetHistogramParameteriv != null)
					Delegates.pglGetHistogramParameteriv(target, pname, @params);
				else
					throw new InvalidOperationException("binding point GetHistogramParameter cannot be found");
			}
			LogProc("glGetHistogramParameteriv({0}, {1}, {2})", target, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetInteger64i_v function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="data">
		/// A <see cref="T:System.Int64*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 3.2
		public static void GetInteger64i_v(int target, UInt32 index, [Out] Int64[] data) {
			unsafe {
				fixed (Int64* fp_data = data)
				{
					if      (Delegates.pglGetInteger64i_v != null)
						Delegates.pglGetInteger64i_v(target, index, fp_data);
					else
						throw new InvalidOperationException("binding point GetInteger64i_v cannot be found");
				}
			}
			LogProc("glGetInteger64i_v({0}, {1}, {2})", target, index, data);
		}

		/// <summary>
		/// Binding for glGetInteger64i_v function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="data">
		/// A <see cref="T:System.Int64"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.2
		public static void GetInteger64i_v(int target, UInt32 index, out Int64 data) {
			unsafe {
				fixed (Int64* fp_data = &data)
				{
					if      (Delegates.pglGetInteger64i_v != null)
						Delegates.pglGetInteger64i_v(target, index, fp_data);
					else
						throw new InvalidOperationException("binding point GetInteger64i_v cannot be found");
				}
			}
			LogProc("glGetInteger64i_v({0}, {1}, {2})", target, index, data);
		}
		

		/// <summary>
		/// Binding for glGetInteger64v function.
		/// </summary>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int64*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetInteger64v(int pname, [Out] Int64[] @params) {
			unsafe {
				fixed (Int64* fp_params = @params)
				{
					if      (Delegates.pglGetInteger64v != null)
						Delegates.pglGetInteger64v(pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetInteger64v cannot be found");
				}
			}
			LogProc("glGetInteger64v({0}, {1})", pname, @params);
		}

		/// <summary>
		/// Binding for glGetInteger64v function.
		/// </summary>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int64"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetInteger64v(int pname, out Int64 @params) {
			unsafe {
				fixed (Int64* fp_params = &@params)
				{
					if      (Delegates.pglGetInteger64v != null)
						Delegates.pglGetInteger64v(pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetInteger64v cannot be found");
				}
			}
			LogProc("glGetInteger64v({0}, {1})", pname, @params);
		}
		

		/// <summary>
		/// Binding for glGetIntegeri_v function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="data">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void GetIntegeri_v(int target, UInt32 index, [Out] int[] data) {
			unsafe {
				fixed (int* fp_data = data)
				{
					if      (Delegates.pglGetIntegeri_v != null)
						Delegates.pglGetIntegeri_v(target, index, fp_data);
					else
						throw new InvalidOperationException("binding point GetIntegeri_v cannot be found");
				}
			}
			LogProc("glGetIntegeri_v({0}, {1}, {2})", target, index, data);
		}

		/// <summary>
		/// Binding for glGetIntegeri_v function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="data">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void GetIntegeri_v(int target, UInt32 index, out int data) {
			unsafe {
				fixed (int* fp_data = &data)
				{
					if      (Delegates.pglGetIntegeri_v != null)
						Delegates.pglGetIntegeri_v(target, index, fp_data);
					else
						throw new InvalidOperationException("binding point GetIntegeri_v cannot be found");
				}
			}
			LogProc("glGetIntegeri_v({0}, {1}, {2})", target, index, data);
		}
		
		/// <summary>
		/// Binding for glGetIntegeri_v function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="data">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void GetIntegeri_v(int target, UInt32 index, int* data) {
			unsafe {
				if      (Delegates.pglGetIntegeri_v != null)
					Delegates.pglGetIntegeri_v(target, index, data);
				else
					throw new InvalidOperationException("binding point GetIntegeri_v cannot be found");
			}
			LogProc("glGetIntegeri_v({0}, {1}, {2})", target, index, "data");
		}
		

		/// <summary>
		/// Binding for glGetIntegerv function.
		/// </summary>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void Get(int pname, [Out] int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglGetIntegerv != null)
						Delegates.pglGetIntegerv(pname, fp_params);
					else
						throw new InvalidOperationException("binding point Get cannot be found");
				}
			}
			LogProc("glGetIntegerv({0}, {1})", pname, @params);
		}

		/// <summary>
		/// Binding for glGetIntegerv function.
		/// </summary>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void Get(int pname, out int @params) {
			unsafe {
				fixed (int* fp_params = &@params)
				{
					if      (Delegates.pglGetIntegerv != null)
						Delegates.pglGetIntegerv(pname, fp_params);
					else
						throw new InvalidOperationException("binding point Get cannot be found");
				}
			}
			LogProc("glGetIntegerv({0}, {1})", pname, @params);
		}
		
		/// <summary>
		/// Binding for glGetIntegerv function.
		/// </summary>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void Get(int pname, int* @params) {
			unsafe {
				if      (Delegates.pglGetIntegerv != null)
					Delegates.pglGetIntegerv(pname, @params);
				else
					throw new InvalidOperationException("binding point Get cannot be found");
			}
			LogProc("glGetIntegerv({0}, {1})", pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetInternalformativ function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="internalformat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="bufSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 4.2
		public static void GetInternalformat(int target, int internalformat, int pname, Int32 bufSize, [Out] int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglGetInternalformativ != null)
						Delegates.pglGetInternalformativ(target, internalformat, pname, bufSize, fp_params);
					else
						throw new InvalidOperationException("binding point GetInternalformat cannot be found");
				}
			}
			LogProc("glGetInternalformativ({0}, {1}, {2}, {3}, {4})", target, internalformat, pname, bufSize, @params);
		}

		/// <summary>
		/// Binding for glGetInternalformativ function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="internalformat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="bufSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.2
		public static void GetInternalformat(int target, int internalformat, int pname, Int32 bufSize, out int @params) {
			unsafe {
				fixed (int* fp_params = &@params)
				{
					if      (Delegates.pglGetInternalformativ != null)
						Delegates.pglGetInternalformativ(target, internalformat, pname, bufSize, fp_params);
					else
						throw new InvalidOperationException("binding point GetInternalformat cannot be found");
				}
			}
			LogProc("glGetInternalformativ({0}, {1}, {2}, {3}, {4})", target, internalformat, pname, bufSize, @params);
		}
		
		/// <summary>
		/// Binding for glGetInternalformativ function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="internalformat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="bufSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.2
		public static void GetInternalformat(int target, int internalformat, int pname, Int32 bufSize, int* @params) {
			unsafe {
				if      (Delegates.pglGetInternalformativ != null)
					Delegates.pglGetInternalformativ(target, internalformat, pname, bufSize, @params);
				else
					throw new InvalidOperationException("binding point GetInternalformat cannot be found");
			}
			LogProc("glGetInternalformativ({0}, {1}, {2}, {3}, {4})", target, internalformat, pname, bufSize, "@params");
		}
		

		/// <summary>
		/// Binding for glGetLightfv function.
		/// </summary>
		/// <param name="light">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void GetLight(int light, int pname, [Out] float[] @params) {
			unsafe {
				fixed (float* fp_params = @params)
				{
					if      (Delegates.pglGetLightfv != null)
						Delegates.pglGetLightfv(light, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetLight cannot be found");
				}
			}
			LogProc("glGetLightfv({0}, {1}, {2})", light, pname, @params);
		}

		/// <summary>
		/// Binding for glGetLightfv function.
		/// </summary>
		/// <param name="light">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void GetLight(int light, int pname, float* @params) {
			unsafe {
				if      (Delegates.pglGetLightfv != null)
					Delegates.pglGetLightfv(light, pname, @params);
				else
					throw new InvalidOperationException("binding point GetLight cannot be found");
			}
			LogProc("glGetLightfv({0}, {1}, {2})", light, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetLightiv function.
		/// </summary>
		/// <param name="light">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void GetLight(int light, int pname, [Out] int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglGetLightiv != null)
						Delegates.pglGetLightiv(light, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetLight cannot be found");
				}
			}
			LogProc("glGetLightiv({0}, {1}, {2})", light, pname, @params);
		}

		/// <summary>
		/// Binding for glGetLightiv function.
		/// </summary>
		/// <param name="light">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void GetLight(int light, int pname, int* @params) {
			unsafe {
				if      (Delegates.pglGetLightiv != null)
					Delegates.pglGetLightiv(light, pname, @params);
				else
					throw new InvalidOperationException("binding point GetLight cannot be found");
			}
			LogProc("glGetLightiv({0}, {1}, {2})", light, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetMapdv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="query">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Double*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void GetMap(int target, int query, [Out] double[] v) {
			unsafe {
				fixed (double* fp_v = v)
				{
					if      (Delegates.pglGetMapdv != null)
						Delegates.pglGetMapdv(target, query, fp_v);
					else
						throw new InvalidOperationException("binding point GetMap cannot be found");
				}
			}
			LogProc("glGetMapdv({0}, {1}, {2})", target, query, v);
		}

		/// <summary>
		/// Binding for glGetMapdv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="query">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void GetMap(int target, int query, double* v) {
			unsafe {
				if      (Delegates.pglGetMapdv != null)
					Delegates.pglGetMapdv(target, query, v);
				else
					throw new InvalidOperationException("binding point GetMap cannot be found");
			}
			LogProc("glGetMapdv({0}, {1}, {2})", target, query, "v");
		}
		

		/// <summary>
		/// Binding for glGetMapfv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="query">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Single*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void GetMap(int target, int query, [Out] float[] v) {
			unsafe {
				fixed (float* fp_v = v)
				{
					if      (Delegates.pglGetMapfv != null)
						Delegates.pglGetMapfv(target, query, fp_v);
					else
						throw new InvalidOperationException("binding point GetMap cannot be found");
				}
			}
			LogProc("glGetMapfv({0}, {1}, {2})", target, query, v);
		}

		/// <summary>
		/// Binding for glGetMapfv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="query">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void GetMap(int target, int query, float* v) {
			unsafe {
				if      (Delegates.pglGetMapfv != null)
					Delegates.pglGetMapfv(target, query, v);
				else
					throw new InvalidOperationException("binding point GetMap cannot be found");
			}
			LogProc("glGetMapfv({0}, {1}, {2})", target, query, "v");
		}
		

		/// <summary>
		/// Binding for glGetMapiv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="query">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void GetMap(int target, int query, [Out] int[] v) {
			unsafe {
				fixed (int* fp_v = v)
				{
					if      (Delegates.pglGetMapiv != null)
						Delegates.pglGetMapiv(target, query, fp_v);
					else
						throw new InvalidOperationException("binding point GetMap cannot be found");
				}
			}
			LogProc("glGetMapiv({0}, {1}, {2})", target, query, v);
		}

		/// <summary>
		/// Binding for glGetMapiv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="query">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void GetMap(int target, int query, int* v) {
			unsafe {
				if      (Delegates.pglGetMapiv != null)
					Delegates.pglGetMapiv(target, query, v);
				else
					throw new InvalidOperationException("binding point GetMap cannot be found");
			}
			LogProc("glGetMapiv({0}, {1}, {2})", target, query, "v");
		}
		

		/// <summary>
		/// Binding for glGetMaterialfv function.
		/// </summary>
		/// <param name="face">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void GetMaterial(int face, int pname, [Out] float[] @params) {
			unsafe {
				fixed (float* fp_params = @params)
				{
					if      (Delegates.pglGetMaterialfv != null)
						Delegates.pglGetMaterialfv(face, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetMaterial cannot be found");
				}
			}
			LogProc("glGetMaterialfv({0}, {1}, {2})", face, pname, @params);
		}

		/// <summary>
		/// Binding for glGetMaterialfv function.
		/// </summary>
		/// <param name="face">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void GetMaterial(int face, int pname, float* @params) {
			unsafe {
				if      (Delegates.pglGetMaterialfv != null)
					Delegates.pglGetMaterialfv(face, pname, @params);
				else
					throw new InvalidOperationException("binding point GetMaterial cannot be found");
			}
			LogProc("glGetMaterialfv({0}, {1}, {2})", face, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetMaterialiv function.
		/// </summary>
		/// <param name="face">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void GetMaterial(int face, int pname, [Out] int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglGetMaterialiv != null)
						Delegates.pglGetMaterialiv(face, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetMaterial cannot be found");
				}
			}
			LogProc("glGetMaterialiv({0}, {1}, {2})", face, pname, @params);
		}

		/// <summary>
		/// Binding for glGetMaterialiv function.
		/// </summary>
		/// <param name="face">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void GetMaterial(int face, int pname, int* @params) {
			unsafe {
				if      (Delegates.pglGetMaterialiv != null)
					Delegates.pglGetMaterialiv(face, pname, @params);
				else
					throw new InvalidOperationException("binding point GetMaterial cannot be found");
			}
			LogProc("glGetMaterialiv({0}, {1}, {2})", face, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetMinmax function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="reset">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="format">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="values">
		/// A <see cref="T:System.IntPtr"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		/// @deprecated
		public static void GetMinmax(int target, bool reset, int format, int type, [Out] object values) {
			GCHandle pp_values = GCHandle.Alloc(values, GCHandleType.Pinned);
			try {
				if      (Delegates.pglGetMinmax != null)
					Delegates.pglGetMinmax(target, reset, format, type, pp_values.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point GetMinmax cannot be found");
			} finally {
				pp_values.Free();
			}
			LogProc("glGetMinmax({0}, {1}, {2}, {3}, {4})", target, reset, format, type, values);
		}

		/// <summary>
		/// Binding for glGetMinmaxParameterfv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		/// @deprecated
		public static void GetMinmaxParameter(int target, int pname, [Out] float[] @params) {
			unsafe {
				fixed (float* fp_params = @params)
				{
					if      (Delegates.pglGetMinmaxParameterfv != null)
						Delegates.pglGetMinmaxParameterfv(target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetMinmaxParameter cannot be found");
				}
			}
			LogProc("glGetMinmaxParameterfv({0}, {1}, {2})", target, pname, @params);
		}

		/// <summary>
		/// Binding for glGetMinmaxParameterfv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		/// @deprecated
		public static void GetMinmaxParameter(int target, int pname, float* @params) {
			unsafe {
				if      (Delegates.pglGetMinmaxParameterfv != null)
					Delegates.pglGetMinmaxParameterfv(target, pname, @params);
				else
					throw new InvalidOperationException("binding point GetMinmaxParameter cannot be found");
			}
			LogProc("glGetMinmaxParameterfv({0}, {1}, {2})", target, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetMinmaxParameteriv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		/// @deprecated
		public static void GetMinmaxParameter(int target, int pname, [Out] int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglGetMinmaxParameteriv != null)
						Delegates.pglGetMinmaxParameteriv(target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetMinmaxParameter cannot be found");
				}
			}
			LogProc("glGetMinmaxParameteriv({0}, {1}, {2})", target, pname, @params);
		}

		/// <summary>
		/// Binding for glGetMinmaxParameteriv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		/// @deprecated
		public static void GetMinmaxParameter(int target, int pname, int* @params) {
			unsafe {
				if      (Delegates.pglGetMinmaxParameteriv != null)
					Delegates.pglGetMinmaxParameteriv(target, pname, @params);
				else
					throw new InvalidOperationException("binding point GetMinmaxParameter cannot be found");
			}
			LogProc("glGetMinmaxParameteriv({0}, {1}, {2})", target, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetMultisamplefv function.
		/// </summary>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="val">
		/// A <see cref="T:System.Single*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetMultisample(int pname, UInt32 index, [Out] float[] val) {
			unsafe {
				fixed (float* fp_val = val)
				{
					if      (Delegates.pglGetMultisamplefv != null)
						Delegates.pglGetMultisamplefv(pname, index, fp_val);
					else
						throw new InvalidOperationException("binding point GetMultisample cannot be found");
				}
			}
			LogProc("glGetMultisamplefv({0}, {1}, {2})", pname, index, val);
		}

		/// <summary>
		/// Binding for glGetMultisamplefv function.
		/// </summary>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="val">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetMultisample(int pname, UInt32 index, out float val) {
			unsafe {
				fixed (float* fp_val = &val)
				{
					if      (Delegates.pglGetMultisamplefv != null)
						Delegates.pglGetMultisamplefv(pname, index, fp_val);
					else
						throw new InvalidOperationException("binding point GetMultisample cannot be found");
				}
			}
			LogProc("glGetMultisamplefv({0}, {1}, {2})", pname, index, val);
		}
		
		/// <summary>
		/// Binding for glGetMultisamplefv function.
		/// </summary>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="val">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetMultisample(int pname, UInt32 index, float* val) {
			unsafe {
				if      (Delegates.pglGetMultisamplefv != null)
					Delegates.pglGetMultisamplefv(pname, index, val);
				else
					throw new InvalidOperationException("binding point GetMultisample cannot be found");
			}
			LogProc("glGetMultisamplefv({0}, {1}, {2})", pname, index, "val");
		}
		

		/// <summary>
		/// Binding for glGetPixelMapfv function.
		/// </summary>
		/// <param name="map">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="values">
		/// A <see cref="T:System.Single*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void GetPixelMap(int map, [Out] float[] values) {
			unsafe {
				fixed (float* fp_values = values)
				{
					if      (Delegates.pglGetPixelMapfv != null)
						Delegates.pglGetPixelMapfv(map, fp_values);
					else
						throw new InvalidOperationException("binding point GetPixelMap cannot be found");
				}
			}
			LogProc("glGetPixelMapfv({0}, {1})", map, values);
		}

		/// <summary>
		/// Binding for glGetPixelMapfv function.
		/// </summary>
		/// <param name="map">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="values">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void GetPixelMap(int map, float* values) {
			unsafe {
				if      (Delegates.pglGetPixelMapfv != null)
					Delegates.pglGetPixelMapfv(map, values);
				else
					throw new InvalidOperationException("binding point GetPixelMap cannot be found");
			}
			LogProc("glGetPixelMapfv({0}, {1})", map, "values");
		}
		

		/// <summary>
		/// Binding for glGetPixelMapuiv function.
		/// </summary>
		/// <param name="map">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="values">
		/// A <see cref="T:System.UInt32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void GetPixelMap(int map, [Out] UInt32[] values) {
			unsafe {
				fixed (UInt32* fp_values = values)
				{
					if      (Delegates.pglGetPixelMapuiv != null)
						Delegates.pglGetPixelMapuiv(map, fp_values);
					else
						throw new InvalidOperationException("binding point GetPixelMap cannot be found");
				}
			}
			LogProc("glGetPixelMapuiv({0}, {1})", map, values);
		}

		/// <summary>
		/// Binding for glGetPixelMapuiv function.
		/// </summary>
		/// <param name="map">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="values">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void GetPixelMap(int map, UInt32* values) {
			unsafe {
				if      (Delegates.pglGetPixelMapuiv != null)
					Delegates.pglGetPixelMapuiv(map, values);
				else
					throw new InvalidOperationException("binding point GetPixelMap cannot be found");
			}
			LogProc("glGetPixelMapuiv({0}, {1})", map, "values");
		}
		

		/// <summary>
		/// Binding for glGetPixelMapusv function.
		/// </summary>
		/// <param name="map">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="values">
		/// A <see cref="T:System.UInt16*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void GetPixelMap(int map, [Out] UInt16[] values) {
			unsafe {
				fixed (UInt16* fp_values = values)
				{
					if      (Delegates.pglGetPixelMapusv != null)
						Delegates.pglGetPixelMapusv(map, fp_values);
					else
						throw new InvalidOperationException("binding point GetPixelMap cannot be found");
				}
			}
			LogProc("glGetPixelMapusv({0}, {1})", map, values);
		}

		/// <summary>
		/// Binding for glGetPointerv function.
		/// </summary>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.IntPtr"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void GetPointer(int pname, [Out] out IntPtr @params) {
			unsafe {
				fixed (IntPtr* fp_params = &@params)
				{
					if      (Delegates.pglGetPointerv != null)
						Delegates.pglGetPointerv(pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetPointer cannot be found");
				}
			}
			LogProc("glGetPointerv({0}, {1})", pname, @params);
		}

		/// <summary>
		/// Binding for glGetPolygonStipple function.
		/// </summary>
		/// <param name="mask">
		/// A <see cref="T:System.Byte*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void GetPolygonStipple([Out] byte[] mask) {
			unsafe {
				fixed (byte* fp_mask = mask)
				{
					if      (Delegates.pglGetPolygonStipple != null)
						Delegates.pglGetPolygonStipple(fp_mask);
					else
						throw new InvalidOperationException("binding point GetPolygonStipple cannot be found");
				}
			}
			LogProc("glGetPolygonStipple({0})", mask);
		}

		/// <summary>
		/// Binding for glGetProgramBinary function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="bufSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="length">
		/// A <see cref="T:System.Int32"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// <param name="binaryFormat">
		/// A <see cref="T:System.Int32"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// <param name="binary">
		/// A <see cref="T:System.IntPtr"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void GetProgramBinary(UInt32 program, Int32 bufSize, [Out] out Int32 length, [Out] out int binaryFormat, [Out] object binary) {
			unsafe {
				GCHandle pp_binary = GCHandle.Alloc(binary, GCHandleType.Pinned);
				try {
					fixed (Int32* fp_length = &length)
					fixed (int* fp_binaryFormat = &binaryFormat)
					{
						if      (Delegates.pglGetProgramBinary != null)
							Delegates.pglGetProgramBinary(program, bufSize, fp_length, fp_binaryFormat, pp_binary.AddrOfPinnedObject());
						else
							throw new InvalidOperationException("binding point GetProgramBinary cannot be found");
					}
				} finally {
					pp_binary.Free();
				}
			}
			LogProc("glGetProgramBinary({0}, {1}, {2}, {3}, {4})", program, bufSize, length, binaryFormat, binary);
		}

		/// <summary>
		/// Binding for glGetProgramInfoLog function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="bufSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="length">
		/// A <see cref="T:System.Int32"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// <param name="infoLog">
		/// A <see cref="T:System.Text.StringBuilder"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void GetProgramInfoLog(UInt32 program, Int32 bufSize, [Out] out Int32 length, [Out] StringBuilder infoLog) {
			unsafe {
				fixed (Int32* fp_length = &length)
				{
					if      (Delegates.pglGetProgramInfoLog != null)
						Delegates.pglGetProgramInfoLog(program, bufSize, fp_length, infoLog);
					else
						throw new InvalidOperationException("binding point GetProgramInfoLog cannot be found");
				}
			}
			LogProc("glGetProgramInfoLog({0}, {1}, {2}, {3})", program, bufSize, length, infoLog);
		}

		/// <summary>
		/// Binding for glGetProgramiv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void GetProgram(UInt32 program, int pname, [Out] int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglGetProgramiv != null)
						Delegates.pglGetProgramiv(program, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetProgram cannot be found");
				}
			}
			LogProc("glGetProgramiv({0}, {1}, {2})", program, pname, @params);
		}

		/// <summary>
		/// Binding for glGetProgramiv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void GetProgram(UInt32 program, int pname, out int @params) {
			unsafe {
				fixed (int* fp_params = &@params)
				{
					if      (Delegates.pglGetProgramiv != null)
						Delegates.pglGetProgramiv(program, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetProgram cannot be found");
				}
			}
			LogProc("glGetProgramiv({0}, {1}, {2})", program, pname, @params);
		}
		
		/// <summary>
		/// Binding for glGetProgramiv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void GetProgram(UInt32 program, int pname, int* @params) {
			unsafe {
				if      (Delegates.pglGetProgramiv != null)
					Delegates.pglGetProgramiv(program, pname, @params);
				else
					throw new InvalidOperationException("binding point GetProgram cannot be found");
			}
			LogProc("glGetProgramiv({0}, {1}, {2})", program, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetProgramPipelineInfoLog function.
		/// </summary>
		/// <param name="pipeline">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="bufSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="length">
		/// A <see cref="T:System.Int32"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// <param name="infoLog">
		/// A <see cref="T:System.Text.StringBuilder"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void GetProgramPipelineInfoLog(UInt32 pipeline, Int32 bufSize, [Out] out Int32 length, [Out] StringBuilder infoLog) {
			unsafe {
				fixed (Int32* fp_length = &length)
				{
					if      (Delegates.pglGetProgramPipelineInfoLog != null)
						Delegates.pglGetProgramPipelineInfoLog(pipeline, bufSize, fp_length, infoLog);
					else
						throw new InvalidOperationException("binding point GetProgramPipelineInfoLog cannot be found");
				}
			}
			LogProc("glGetProgramPipelineInfoLog({0}, {1}, {2}, {3})", pipeline, bufSize, length, infoLog);
		}

		/// <summary>
		/// Binding for glGetProgramPipelineiv function.
		/// </summary>
		/// <param name="pipeline">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void GetProgramPipeline(UInt32 pipeline, int pname, [Out] int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglGetProgramPipelineiv != null)
						Delegates.pglGetProgramPipelineiv(pipeline, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetProgramPipeline cannot be found");
				}
			}
			LogProc("glGetProgramPipelineiv({0}, {1}, {2})", pipeline, pname, @params);
		}

		/// <summary>
		/// Binding for glGetProgramPipelineiv function.
		/// </summary>
		/// <param name="pipeline">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void GetProgramPipeline(UInt32 pipeline, int pname, out int @params) {
			unsafe {
				fixed (int* fp_params = &@params)
				{
					if      (Delegates.pglGetProgramPipelineiv != null)
						Delegates.pglGetProgramPipelineiv(pipeline, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetProgramPipeline cannot be found");
				}
			}
			LogProc("glGetProgramPipelineiv({0}, {1}, {2})", pipeline, pname, @params);
		}
		
		/// <summary>
		/// Binding for glGetProgramPipelineiv function.
		/// </summary>
		/// <param name="pipeline">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void GetProgramPipeline(UInt32 pipeline, int pname, int* @params) {
			unsafe {
				if      (Delegates.pglGetProgramPipelineiv != null)
					Delegates.pglGetProgramPipelineiv(pipeline, pname, @params);
				else
					throw new InvalidOperationException("binding point GetProgramPipeline cannot be found");
			}
			LogProc("glGetProgramPipelineiv({0}, {1}, {2})", pipeline, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetProgramStageiv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="shadertype">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="values">
		/// A <see cref="T:System.Int32"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetProgramStage(UInt32 program, int shadertype, int pname, [Out] out int values) {
			unsafe {
				fixed (int* fp_values = &values)
				{
					if      (Delegates.pglGetProgramStageiv != null)
						Delegates.pglGetProgramStageiv(program, shadertype, pname, fp_values);
					else
						throw new InvalidOperationException("binding point GetProgramStage cannot be found");
				}
			}
			LogProc("glGetProgramStageiv({0}, {1}, {2}, {3})", program, shadertype, pname, values);
		}

		/// <summary>
		/// Binding for glGetQueryIndexediv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetQueryIndexed(int target, UInt32 index, int pname, [Out] int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglGetQueryIndexediv != null)
						Delegates.pglGetQueryIndexediv(target, index, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetQueryIndexed cannot be found");
				}
			}
			LogProc("glGetQueryIndexediv({0}, {1}, {2}, {3})", target, index, pname, @params);
		}

		/// <summary>
		/// Binding for glGetQueryIndexediv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetQueryIndexed(int target, UInt32 index, int pname, out int @params) {
			unsafe {
				fixed (int* fp_params = &@params)
				{
					if      (Delegates.pglGetQueryIndexediv != null)
						Delegates.pglGetQueryIndexediv(target, index, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetQueryIndexed cannot be found");
				}
			}
			LogProc("glGetQueryIndexediv({0}, {1}, {2}, {3})", target, index, pname, @params);
		}
		
		/// <summary>
		/// Binding for glGetQueryIndexediv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetQueryIndexed(int target, UInt32 index, int pname, int* @params) {
			unsafe {
				if      (Delegates.pglGetQueryIndexediv != null)
					Delegates.pglGetQueryIndexediv(target, index, pname, @params);
				else
					throw new InvalidOperationException("binding point GetQueryIndexed cannot be found");
			}
			LogProc("glGetQueryIndexediv({0}, {1}, {2}, {3})", target, index, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetQueryiv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.5
		public static void GetQuery(int target, int pname, [Out] int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglGetQueryiv != null)
						Delegates.pglGetQueryiv(target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetQuery cannot be found");
				}
			}
			LogProc("glGetQueryiv({0}, {1}, {2})", target, pname, @params);
		}

		/// <summary>
		/// Binding for glGetQueryiv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.5
		public static void GetQuery(int target, int pname, out int @params) {
			unsafe {
				fixed (int* fp_params = &@params)
				{
					if      (Delegates.pglGetQueryiv != null)
						Delegates.pglGetQueryiv(target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetQuery cannot be found");
				}
			}
			LogProc("glGetQueryiv({0}, {1}, {2})", target, pname, @params);
		}
		
		/// <summary>
		/// Binding for glGetQueryiv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.5
		public static void GetQuery(int target, int pname, int* @params) {
			unsafe {
				if      (Delegates.pglGetQueryiv != null)
					Delegates.pglGetQueryiv(target, pname, @params);
				else
					throw new InvalidOperationException("binding point GetQuery cannot be found");
			}
			LogProc("glGetQueryiv({0}, {1}, {2})", target, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetQueryObjecti64v function.
		/// </summary>
		/// <param name="id">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int64*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetQueryObjecti64v(UInt32 id, int pname, [Out] Int64[] @params) {
			unsafe {
				fixed (Int64* fp_params = @params)
				{
					if      (Delegates.pglGetQueryObjecti64v != null)
						Delegates.pglGetQueryObjecti64v(id, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetQueryObjecti64v cannot be found");
				}
			}
			LogProc("glGetQueryObjecti64v({0}, {1}, {2})", id, pname, @params);
		}

		/// <summary>
		/// Binding for glGetQueryObjecti64v function.
		/// </summary>
		/// <param name="id">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int64"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetQueryObjecti64v(UInt32 id, int pname, out Int64 @params) {
			unsafe {
				fixed (Int64* fp_params = &@params)
				{
					if      (Delegates.pglGetQueryObjecti64v != null)
						Delegates.pglGetQueryObjecti64v(id, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetQueryObjecti64v cannot be found");
				}
			}
			LogProc("glGetQueryObjecti64v({0}, {1}, {2})", id, pname, @params);
		}
		

		/// <summary>
		/// Binding for glGetQueryObjectiv function.
		/// </summary>
		/// <param name="id">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.5
		public static void GetQueryObject(UInt32 id, int pname, [Out] int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglGetQueryObjectiv != null)
						Delegates.pglGetQueryObjectiv(id, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetQueryObject cannot be found");
				}
			}
			LogProc("glGetQueryObjectiv({0}, {1}, {2})", id, pname, @params);
		}

		/// <summary>
		/// Binding for glGetQueryObjectiv function.
		/// </summary>
		/// <param name="id">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.5
		public static void GetQueryObject(UInt32 id, int pname, out int @params) {
			unsafe {
				fixed (int* fp_params = &@params)
				{
					if      (Delegates.pglGetQueryObjectiv != null)
						Delegates.pglGetQueryObjectiv(id, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetQueryObject cannot be found");
				}
			}
			LogProc("glGetQueryObjectiv({0}, {1}, {2})", id, pname, @params);
		}
		
		/// <summary>
		/// Binding for glGetQueryObjectiv function.
		/// </summary>
		/// <param name="id">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.5
		public static void GetQueryObject(UInt32 id, int pname, int* @params) {
			unsafe {
				if      (Delegates.pglGetQueryObjectiv != null)
					Delegates.pglGetQueryObjectiv(id, pname, @params);
				else
					throw new InvalidOperationException("binding point GetQueryObject cannot be found");
			}
			LogProc("glGetQueryObjectiv({0}, {1}, {2})", id, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetQueryObjectui64v function.
		/// </summary>
		/// <param name="id">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.UInt64*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetQueryObjectui64v(UInt32 id, int pname, [Out] UInt64[] @params) {
			unsafe {
				fixed (UInt64* fp_params = @params)
				{
					if      (Delegates.pglGetQueryObjectui64v != null)
						Delegates.pglGetQueryObjectui64v(id, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetQueryObjectui64v cannot be found");
				}
			}
			LogProc("glGetQueryObjectui64v({0}, {1}, {2})", id, pname, @params);
		}

		/// <summary>
		/// Binding for glGetQueryObjectui64v function.
		/// </summary>
		/// <param name="id">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.UInt64"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetQueryObjectui64v(UInt32 id, int pname, out UInt64 @params) {
			unsafe {
				fixed (UInt64* fp_params = &@params)
				{
					if      (Delegates.pglGetQueryObjectui64v != null)
						Delegates.pglGetQueryObjectui64v(id, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetQueryObjectui64v cannot be found");
				}
			}
			LogProc("glGetQueryObjectui64v({0}, {1}, {2})", id, pname, @params);
		}
		

		/// <summary>
		/// Binding for glGetQueryObjectuiv function.
		/// </summary>
		/// <param name="id">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.UInt32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.5
		public static void GetQueryObjectuiv(UInt32 id, int pname, [Out] UInt32[] @params) {
			unsafe {
				fixed (UInt32* fp_params = @params)
				{
					if      (Delegates.pglGetQueryObjectuiv != null)
						Delegates.pglGetQueryObjectuiv(id, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetQueryObjectuiv cannot be found");
				}
			}
			LogProc("glGetQueryObjectuiv({0}, {1}, {2})", id, pname, @params);
		}

		/// <summary>
		/// Binding for glGetQueryObjectuiv function.
		/// </summary>
		/// <param name="id">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.5
		public static void GetQueryObjectuiv(UInt32 id, int pname, out UInt32 @params) {
			unsafe {
				fixed (UInt32* fp_params = &@params)
				{
					if      (Delegates.pglGetQueryObjectuiv != null)
						Delegates.pglGetQueryObjectuiv(id, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetQueryObjectuiv cannot be found");
				}
			}
			LogProc("glGetQueryObjectuiv({0}, {1}, {2})", id, pname, @params);
		}
		
		/// <summary>
		/// Binding for glGetQueryObjectuiv function.
		/// </summary>
		/// <param name="id">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.5
		public static void GetQueryObjectuiv(UInt32 id, int pname, UInt32* @params) {
			unsafe {
				if      (Delegates.pglGetQueryObjectuiv != null)
					Delegates.pglGetQueryObjectuiv(id, pname, @params);
				else
					throw new InvalidOperationException("binding point GetQueryObjectuiv cannot be found");
			}
			LogProc("glGetQueryObjectuiv({0}, {1}, {2})", id, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetRenderbufferParameteriv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void GetRenderbufferParameter(int target, int pname, [Out] int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglGetRenderbufferParameteriv != null)
						Delegates.pglGetRenderbufferParameteriv(target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetRenderbufferParameter cannot be found");
				}
			}
			LogProc("glGetRenderbufferParameteriv({0}, {1}, {2})", target, pname, @params);
		}

		/// <summary>
		/// Binding for glGetRenderbufferParameteriv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void GetRenderbufferParameter(int target, int pname, out int @params) {
			unsafe {
				fixed (int* fp_params = &@params)
				{
					if      (Delegates.pglGetRenderbufferParameteriv != null)
						Delegates.pglGetRenderbufferParameteriv(target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetRenderbufferParameter cannot be found");
				}
			}
			LogProc("glGetRenderbufferParameteriv({0}, {1}, {2})", target, pname, @params);
		}
		
		/// <summary>
		/// Binding for glGetRenderbufferParameteriv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void GetRenderbufferParameter(int target, int pname, int* @params) {
			unsafe {
				if      (Delegates.pglGetRenderbufferParameteriv != null)
					Delegates.pglGetRenderbufferParameteriv(target, pname, @params);
				else
					throw new InvalidOperationException("binding point GetRenderbufferParameter cannot be found");
			}
			LogProc("glGetRenderbufferParameteriv({0}, {1}, {2})", target, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetSamplerParameterfv function.
		/// </summary>
		/// <param name="sampler">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetSamplerParameter(UInt32 sampler, int pname, [Out] float[] @params) {
			unsafe {
				fixed (float* fp_params = @params)
				{
					if      (Delegates.pglGetSamplerParameterfv != null)
						Delegates.pglGetSamplerParameterfv(sampler, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetSamplerParameter cannot be found");
				}
			}
			LogProc("glGetSamplerParameterfv({0}, {1}, {2})", sampler, pname, @params);
		}

		/// <summary>
		/// Binding for glGetSamplerParameterfv function.
		/// </summary>
		/// <param name="sampler">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetSamplerParameter(UInt32 sampler, int pname, out float @params) {
			unsafe {
				fixed (float* fp_params = &@params)
				{
					if      (Delegates.pglGetSamplerParameterfv != null)
						Delegates.pglGetSamplerParameterfv(sampler, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetSamplerParameter cannot be found");
				}
			}
			LogProc("glGetSamplerParameterfv({0}, {1}, {2})", sampler, pname, @params);
		}
		
		/// <summary>
		/// Binding for glGetSamplerParameterfv function.
		/// </summary>
		/// <param name="sampler">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetSamplerParameter(UInt32 sampler, int pname, float* @params) {
			unsafe {
				if      (Delegates.pglGetSamplerParameterfv != null)
					Delegates.pglGetSamplerParameterfv(sampler, pname, @params);
				else
					throw new InvalidOperationException("binding point GetSamplerParameter cannot be found");
			}
			LogProc("glGetSamplerParameterfv({0}, {1}, {2})", sampler, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetSamplerParameterIiv function.
		/// </summary>
		/// <param name="sampler">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetSamplerParameterI(UInt32 sampler, int pname, [Out] int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglGetSamplerParameterIiv != null)
						Delegates.pglGetSamplerParameterIiv(sampler, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetSamplerParameterI cannot be found");
				}
			}
			LogProc("glGetSamplerParameterIiv({0}, {1}, {2})", sampler, pname, @params);
		}

		/// <summary>
		/// Binding for glGetSamplerParameterIiv function.
		/// </summary>
		/// <param name="sampler">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetSamplerParameterI(UInt32 sampler, int pname, out int @params) {
			unsafe {
				fixed (int* fp_params = &@params)
				{
					if      (Delegates.pglGetSamplerParameterIiv != null)
						Delegates.pglGetSamplerParameterIiv(sampler, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetSamplerParameterI cannot be found");
				}
			}
			LogProc("glGetSamplerParameterIiv({0}, {1}, {2})", sampler, pname, @params);
		}
		
		/// <summary>
		/// Binding for glGetSamplerParameterIiv function.
		/// </summary>
		/// <param name="sampler">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetSamplerParameterI(UInt32 sampler, int pname, int* @params) {
			unsafe {
				if      (Delegates.pglGetSamplerParameterIiv != null)
					Delegates.pglGetSamplerParameterIiv(sampler, pname, @params);
				else
					throw new InvalidOperationException("binding point GetSamplerParameterI cannot be found");
			}
			LogProc("glGetSamplerParameterIiv({0}, {1}, {2})", sampler, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetSamplerParameterIuiv function.
		/// </summary>
		/// <param name="sampler">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.UInt32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetSamplerParameterI(UInt32 sampler, int pname, [Out] UInt32[] @params) {
			unsafe {
				fixed (UInt32* fp_params = @params)
				{
					if      (Delegates.pglGetSamplerParameterIuiv != null)
						Delegates.pglGetSamplerParameterIuiv(sampler, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetSamplerParameterI cannot be found");
				}
			}
			LogProc("glGetSamplerParameterIuiv({0}, {1}, {2})", sampler, pname, @params);
		}

		/// <summary>
		/// Binding for glGetSamplerParameterIuiv function.
		/// </summary>
		/// <param name="sampler">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetSamplerParameterI(UInt32 sampler, int pname, out UInt32 @params) {
			unsafe {
				fixed (UInt32* fp_params = &@params)
				{
					if      (Delegates.pglGetSamplerParameterIuiv != null)
						Delegates.pglGetSamplerParameterIuiv(sampler, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetSamplerParameterI cannot be found");
				}
			}
			LogProc("glGetSamplerParameterIuiv({0}, {1}, {2})", sampler, pname, @params);
		}
		
		/// <summary>
		/// Binding for glGetSamplerParameterIuiv function.
		/// </summary>
		/// <param name="sampler">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetSamplerParameterI(UInt32 sampler, int pname, UInt32* @params) {
			unsafe {
				if      (Delegates.pglGetSamplerParameterIuiv != null)
					Delegates.pglGetSamplerParameterIuiv(sampler, pname, @params);
				else
					throw new InvalidOperationException("binding point GetSamplerParameterI cannot be found");
			}
			LogProc("glGetSamplerParameterIuiv({0}, {1}, {2})", sampler, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetSamplerParameteriv function.
		/// </summary>
		/// <param name="sampler">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetSamplerParameter(UInt32 sampler, int pname, [Out] int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglGetSamplerParameteriv != null)
						Delegates.pglGetSamplerParameteriv(sampler, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetSamplerParameter cannot be found");
				}
			}
			LogProc("glGetSamplerParameteriv({0}, {1}, {2})", sampler, pname, @params);
		}

		/// <summary>
		/// Binding for glGetSamplerParameteriv function.
		/// </summary>
		/// <param name="sampler">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetSamplerParameter(UInt32 sampler, int pname, out int @params) {
			unsafe {
				fixed (int* fp_params = &@params)
				{
					if      (Delegates.pglGetSamplerParameteriv != null)
						Delegates.pglGetSamplerParameteriv(sampler, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetSamplerParameter cannot be found");
				}
			}
			LogProc("glGetSamplerParameteriv({0}, {1}, {2})", sampler, pname, @params);
		}
		
		/// <summary>
		/// Binding for glGetSamplerParameteriv function.
		/// </summary>
		/// <param name="sampler">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetSamplerParameter(UInt32 sampler, int pname, int* @params) {
			unsafe {
				if      (Delegates.pglGetSamplerParameteriv != null)
					Delegates.pglGetSamplerParameteriv(sampler, pname, @params);
				else
					throw new InvalidOperationException("binding point GetSamplerParameter cannot be found");
			}
			LogProc("glGetSamplerParameteriv({0}, {1}, {2})", sampler, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetSeparableFilter function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="format">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="row">
		/// A <see cref="T:System.IntPtr"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// <param name="column">
		/// A <see cref="T:System.IntPtr"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// <param name="span">
		/// A <see cref="T:System.IntPtr"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		/// @deprecated
		public static void GetSeparableFilter(int target, int format, int type, [Out] object row, [Out] object column, [Out] object span) {
			GCHandle pp_row = GCHandle.Alloc(row, GCHandleType.Pinned);
			GCHandle pp_column = GCHandle.Alloc(column, GCHandleType.Pinned);
			GCHandle pp_span = GCHandle.Alloc(span, GCHandleType.Pinned);
			try {
				if      (Delegates.pglGetSeparableFilter != null)
					Delegates.pglGetSeparableFilter(target, format, type, pp_row.AddrOfPinnedObject(), pp_column.AddrOfPinnedObject(), pp_span.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point GetSeparableFilter cannot be found");
			} finally {
				pp_row.Free();
				pp_column.Free();
				pp_span.Free();
			}
			LogProc("glGetSeparableFilter({0}, {1}, {2}, {3}, {4}, {5})", target, format, type, row, column, span);
		}

		/// <summary>
		/// Binding for glGetShaderInfoLog function.
		/// </summary>
		/// <param name="shader">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="bufSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="length">
		/// A <see cref="T:System.Int32"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// <param name="infoLog">
		/// A <see cref="T:System.Text.StringBuilder"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void GetShaderInfoLog(UInt32 shader, Int32 bufSize, [Out] out Int32 length, [Out] StringBuilder infoLog) {
			unsafe {
				fixed (Int32* fp_length = &length)
				{
					if      (Delegates.pglGetShaderInfoLog != null)
						Delegates.pglGetShaderInfoLog(shader, bufSize, fp_length, infoLog);
					else
						throw new InvalidOperationException("binding point GetShaderInfoLog cannot be found");
				}
			}
			LogProc("glGetShaderInfoLog({0}, {1}, {2}, {3})", shader, bufSize, length, infoLog);
		}

		/// <summary>
		/// Binding for glGetShaderiv function.
		/// </summary>
		/// <param name="shader">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void GetShader(UInt32 shader, int pname, [Out] int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglGetShaderiv != null)
						Delegates.pglGetShaderiv(shader, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetShader cannot be found");
				}
			}
			LogProc("glGetShaderiv({0}, {1}, {2})", shader, pname, @params);
		}

		/// <summary>
		/// Binding for glGetShaderiv function.
		/// </summary>
		/// <param name="shader">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void GetShader(UInt32 shader, int pname, out int @params) {
			unsafe {
				fixed (int* fp_params = &@params)
				{
					if      (Delegates.pglGetShaderiv != null)
						Delegates.pglGetShaderiv(shader, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetShader cannot be found");
				}
			}
			LogProc("glGetShaderiv({0}, {1}, {2})", shader, pname, @params);
		}
		
		/// <summary>
		/// Binding for glGetShaderiv function.
		/// </summary>
		/// <param name="shader">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void GetShader(UInt32 shader, int pname, int* @params) {
			unsafe {
				if      (Delegates.pglGetShaderiv != null)
					Delegates.pglGetShaderiv(shader, pname, @params);
				else
					throw new InvalidOperationException("binding point GetShader cannot be found");
			}
			LogProc("glGetShaderiv({0}, {1}, {2})", shader, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetShaderPrecisionFormat function.
		/// </summary>
		/// <param name="shadertype">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="precisiontype">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="range">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// This array parameter shall have a fixed length of 2 element(s).
		/// </param>
		/// <param name="precision">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// This array parameter shall have a fixed length of 2 element(s).
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void GetShaderPrecisionFormat(int shadertype, int precisiontype, [Out] int[] range, [Out] int[] precision) {
			unsafe {
				fixed (int* fp_range = range)
				fixed (int* fp_precision = precision)
				{
					if      (Delegates.pglGetShaderPrecisionFormat != null)
						Delegates.pglGetShaderPrecisionFormat(shadertype, precisiontype, fp_range, fp_precision);
					else
						throw new InvalidOperationException("binding point GetShaderPrecisionFormat cannot be found");
				}
			}
			LogProc("glGetShaderPrecisionFormat({0}, {1}, {2}, {3})", shadertype, precisiontype, range, precision);
		}

		/// <summary>
		/// Binding for glGetShaderPrecisionFormat function.
		/// </summary>
		/// <param name="shadertype">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="precisiontype">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="range">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// This array parameter shall have a fixed length of 2 element(s).
		/// </param>
		/// <param name="precision">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void GetShaderPrecisionFormat(int shadertype, int precisiontype, [Out] int[] range, int* precision) {
			unsafe {
				fixed (int* fp_range = range)
				{
					if      (Delegates.pglGetShaderPrecisionFormat != null)
						Delegates.pglGetShaderPrecisionFormat(shadertype, precisiontype, fp_range, precision);
					else
						throw new InvalidOperationException("binding point GetShaderPrecisionFormat cannot be found");
				}
			}
			LogProc("glGetShaderPrecisionFormat({0}, {1}, {2}, {3})", shadertype, precisiontype, range, "precision");
		}
		

		/// <summary>
		/// Binding for glGetShaderSource function.
		/// </summary>
		/// <param name="shader">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="bufSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="length">
		/// A <see cref="T:System.Int32"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// <param name="source">
		/// A <see cref="T:System.Text.StringBuilder"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void GetShaderSource(UInt32 shader, Int32 bufSize, [Out] out Int32 length, [Out] StringBuilder source) {
			unsafe {
				fixed (Int32* fp_length = &length)
				{
					if      (Delegates.pglGetShaderSource != null)
						Delegates.pglGetShaderSource(shader, bufSize, fp_length, source);
					else
						throw new InvalidOperationException("binding point GetShaderSource cannot be found");
				}
			}
			LogProc("glGetShaderSource({0}, {1}, {2}, {3})", shader, bufSize, length, source);
		}

		/// <summary>
		/// Binding for glGetString function.
		/// </summary>
		/// <param name="name">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static string GetString(int name) {
			string retvalue;
			if      (Delegates.pglGetString != null)
				retvalue = (Marshal.PtrToStringAnsi(Delegates.pglGetString(name)));
			else
				throw new InvalidOperationException("binding point GetString cannot be found");
			LogProc("glGetString({0}) = {1}", name, retvalue);
			return (retvalue);
		}

		/// <summary>
		/// Binding for glGetStringi function.
		/// </summary>
		/// <param name="name">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static string GetString(int name, UInt32 index) {
			string retvalue;
			if      (Delegates.pglGetStringi != null)
				retvalue = (Marshal.PtrToStringAnsi(Delegates.pglGetStringi(name, index)));
			else
				throw new InvalidOperationException("binding point GetString cannot be found");
			LogProc("glGetStringi({0}, {1}) = {2}", name, index, retvalue);
			return (retvalue);
		}

		/// <summary>
		/// Binding for glGetSubroutineIndex function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="shadertype">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="name">
		/// A <see cref="T:System.String"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static UInt32 GetSubroutineIndex(UInt32 program, int shadertype, string name) {
			UInt32 retvalue;
			if      (Delegates.pglGetSubroutineIndex != null)
				retvalue = (Delegates.pglGetSubroutineIndex(program, shadertype, name));
			else
				throw new InvalidOperationException("binding point GetSubroutineIndex cannot be found");
			LogProc("glGetSubroutineIndex({0}, {1}, {2}) = {3}", program, shadertype, name, retvalue);
			return (retvalue);
		}

		/// <summary>
		/// Binding for glGetSubroutineUniformLocation function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="shadertype">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="name">
		/// A <see cref="T:System.String"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static int GetSubroutineUniformLocation(UInt32 program, int shadertype, string name) {
			int retvalue;
			if      (Delegates.pglGetSubroutineUniformLocation != null)
				retvalue = (Delegates.pglGetSubroutineUniformLocation(program, shadertype, name));
			else
				throw new InvalidOperationException("binding point GetSubroutineUniformLocation cannot be found");
			LogProc("glGetSubroutineUniformLocation({0}, {1}, {2}) = {3}", program, shadertype, name, retvalue);
			return (retvalue);
		}

		/// <summary>
		/// Binding for glGetSynciv function.
		/// </summary>
		/// <param name="sync">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="bufSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="length">
		/// A <see cref="T:System.Int32"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// <param name="values">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetSync(int sync, int pname, Int32 bufSize, [Out] out Int32 length, [Out] int[] values) {
			unsafe {
				fixed (Int32* fp_length = &length)
				fixed (int* fp_values = values)
				{
					if      (Delegates.pglGetSynciv != null)
						Delegates.pglGetSynciv(sync, pname, bufSize, fp_length, fp_values);
					else
						throw new InvalidOperationException("binding point GetSync cannot be found");
				}
			}
			LogProc("glGetSynciv({0}, {1}, {2}, {3}, {4})", sync, pname, bufSize, length, values);
		}

		/// <summary>
		/// Binding for glGetSynciv function.
		/// </summary>
		/// <param name="sync">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="bufSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="length">
		/// A <see cref="T:System.Int32"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// <param name="values">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetSync(int sync, int pname, Int32 bufSize, [Out] out Int32 length, out int values) {
			unsafe {
				fixed (Int32* fp_length = &length)
				fixed (int* fp_values = &values)
				{
					if      (Delegates.pglGetSynciv != null)
						Delegates.pglGetSynciv(sync, pname, bufSize, fp_length, fp_values);
					else
						throw new InvalidOperationException("binding point GetSync cannot be found");
				}
			}
			LogProc("glGetSynciv({0}, {1}, {2}, {3}, {4})", sync, pname, bufSize, length, values);
		}
		
		/// <summary>
		/// Binding for glGetSynciv function.
		/// </summary>
		/// <param name="sync">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="bufSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="length">
		/// A <see cref="T:System.Int32"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// <param name="values">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetSync(int sync, int pname, Int32 bufSize, [Out] out Int32 length, int* values) {
			unsafe {
				fixed (Int32* fp_length = &length)
				{
					if      (Delegates.pglGetSynciv != null)
						Delegates.pglGetSynciv(sync, pname, bufSize, fp_length, values);
					else
						throw new InvalidOperationException("binding point GetSync cannot be found");
				}
			}
			LogProc("glGetSynciv({0}, {1}, {2}, {3}, {4})", sync, pname, bufSize, length, "values");
		}
		

		/// <summary>
		/// Binding for glGetTexEnvfv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void GetTexEnv(int target, int pname, [Out] float[] @params) {
			unsafe {
				fixed (float* fp_params = @params)
				{
					if      (Delegates.pglGetTexEnvfv != null)
						Delegates.pglGetTexEnvfv(target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetTexEnv cannot be found");
				}
			}
			LogProc("glGetTexEnvfv({0}, {1}, {2})", target, pname, @params);
		}

		/// <summary>
		/// Binding for glGetTexEnvfv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void GetTexEnv(int target, int pname, float* @params) {
			unsafe {
				if      (Delegates.pglGetTexEnvfv != null)
					Delegates.pglGetTexEnvfv(target, pname, @params);
				else
					throw new InvalidOperationException("binding point GetTexEnv cannot be found");
			}
			LogProc("glGetTexEnvfv({0}, {1}, {2})", target, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetTexEnviv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void GetTexEnv(int target, int pname, [Out] int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglGetTexEnviv != null)
						Delegates.pglGetTexEnviv(target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetTexEnv cannot be found");
				}
			}
			LogProc("glGetTexEnviv({0}, {1}, {2})", target, pname, @params);
		}

		/// <summary>
		/// Binding for glGetTexEnviv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void GetTexEnv(int target, int pname, int* @params) {
			unsafe {
				if      (Delegates.pglGetTexEnviv != null)
					Delegates.pglGetTexEnviv(target, pname, @params);
				else
					throw new InvalidOperationException("binding point GetTexEnv cannot be found");
			}
			LogProc("glGetTexEnviv({0}, {1}, {2})", target, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetTexGendv function.
		/// </summary>
		/// <param name="coord">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Double*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void GetTexGen(int coord, int pname, [Out] double[] @params) {
			unsafe {
				fixed (double* fp_params = @params)
				{
					if      (Delegates.pglGetTexGendv != null)
						Delegates.pglGetTexGendv(coord, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetTexGen cannot be found");
				}
			}
			LogProc("glGetTexGendv({0}, {1}, {2})", coord, pname, @params);
		}

		/// <summary>
		/// Binding for glGetTexGendv function.
		/// </summary>
		/// <param name="coord">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void GetTexGen(int coord, int pname, double* @params) {
			unsafe {
				if      (Delegates.pglGetTexGendv != null)
					Delegates.pglGetTexGendv(coord, pname, @params);
				else
					throw new InvalidOperationException("binding point GetTexGen cannot be found");
			}
			LogProc("glGetTexGendv({0}, {1}, {2})", coord, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetTexGenfv function.
		/// </summary>
		/// <param name="coord">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void GetTexGen(int coord, int pname, [Out] float[] @params) {
			unsafe {
				fixed (float* fp_params = @params)
				{
					if      (Delegates.pglGetTexGenfv != null)
						Delegates.pglGetTexGenfv(coord, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetTexGen cannot be found");
				}
			}
			LogProc("glGetTexGenfv({0}, {1}, {2})", coord, pname, @params);
		}

		/// <summary>
		/// Binding for glGetTexGenfv function.
		/// </summary>
		/// <param name="coord">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void GetTexGen(int coord, int pname, float* @params) {
			unsafe {
				if      (Delegates.pglGetTexGenfv != null)
					Delegates.pglGetTexGenfv(coord, pname, @params);
				else
					throw new InvalidOperationException("binding point GetTexGen cannot be found");
			}
			LogProc("glGetTexGenfv({0}, {1}, {2})", coord, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetTexGeniv function.
		/// </summary>
		/// <param name="coord">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void GetTexGen(int coord, int pname, [Out] int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglGetTexGeniv != null)
						Delegates.pglGetTexGeniv(coord, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetTexGen cannot be found");
				}
			}
			LogProc("glGetTexGeniv({0}, {1}, {2})", coord, pname, @params);
		}

		/// <summary>
		/// Binding for glGetTexGeniv function.
		/// </summary>
		/// <param name="coord">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void GetTexGen(int coord, int pname, int* @params) {
			unsafe {
				if      (Delegates.pglGetTexGeniv != null)
					Delegates.pglGetTexGeniv(coord, pname, @params);
				else
					throw new InvalidOperationException("binding point GetTexGen cannot be found");
			}
			LogProc("glGetTexGeniv({0}, {1}, {2})", coord, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetTexImage function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="format">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pixels">
		/// A <see cref="T:System.IntPtr"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void GetTexImage(int target, int level, int format, int type, [Out] object pixels) {
			GCHandle pp_pixels = GCHandle.Alloc(pixels, GCHandleType.Pinned);
			try {
				if      (Delegates.pglGetTexImage != null)
					Delegates.pglGetTexImage(target, level, format, type, pp_pixels.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point GetTexImage cannot be found");
			} finally {
				pp_pixels.Free();
			}
			LogProc("glGetTexImage({0}, {1}, {2}, {3}, {4})", target, level, format, type, pixels);
		}

		/// <summary>
		/// Binding for glGetTexLevelParameterfv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void GetTexLevelParameter(int target, int level, int pname, [Out] float[] @params) {
			unsafe {
				fixed (float* fp_params = @params)
				{
					if      (Delegates.pglGetTexLevelParameterfv != null)
						Delegates.pglGetTexLevelParameterfv(target, level, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetTexLevelParameter cannot be found");
				}
			}
			LogProc("glGetTexLevelParameterfv({0}, {1}, {2}, {3})", target, level, pname, @params);
		}

		/// <summary>
		/// Binding for glGetTexLevelParameterfv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void GetTexLevelParameter(int target, int level, int pname, out float @params) {
			unsafe {
				fixed (float* fp_params = &@params)
				{
					if      (Delegates.pglGetTexLevelParameterfv != null)
						Delegates.pglGetTexLevelParameterfv(target, level, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetTexLevelParameter cannot be found");
				}
			}
			LogProc("glGetTexLevelParameterfv({0}, {1}, {2}, {3})", target, level, pname, @params);
		}
		
		/// <summary>
		/// Binding for glGetTexLevelParameterfv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void GetTexLevelParameter(int target, int level, int pname, float* @params) {
			unsafe {
				if      (Delegates.pglGetTexLevelParameterfv != null)
					Delegates.pglGetTexLevelParameterfv(target, level, pname, @params);
				else
					throw new InvalidOperationException("binding point GetTexLevelParameter cannot be found");
			}
			LogProc("glGetTexLevelParameterfv({0}, {1}, {2}, {3})", target, level, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetTexLevelParameteriv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void GetTexLevelParameter(int target, int level, int pname, [Out] int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglGetTexLevelParameteriv != null)
						Delegates.pglGetTexLevelParameteriv(target, level, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetTexLevelParameter cannot be found");
				}
			}
			LogProc("glGetTexLevelParameteriv({0}, {1}, {2}, {3})", target, level, pname, @params);
		}

		/// <summary>
		/// Binding for glGetTexLevelParameteriv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void GetTexLevelParameter(int target, int level, int pname, out int @params) {
			unsafe {
				fixed (int* fp_params = &@params)
				{
					if      (Delegates.pglGetTexLevelParameteriv != null)
						Delegates.pglGetTexLevelParameteriv(target, level, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetTexLevelParameter cannot be found");
				}
			}
			LogProc("glGetTexLevelParameteriv({0}, {1}, {2}, {3})", target, level, pname, @params);
		}
		
		/// <summary>
		/// Binding for glGetTexLevelParameteriv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void GetTexLevelParameter(int target, int level, int pname, int* @params) {
			unsafe {
				if      (Delegates.pglGetTexLevelParameteriv != null)
					Delegates.pglGetTexLevelParameteriv(target, level, pname, @params);
				else
					throw new InvalidOperationException("binding point GetTexLevelParameter cannot be found");
			}
			LogProc("glGetTexLevelParameteriv({0}, {1}, {2}, {3})", target, level, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetTexParameterfv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void GetTexParameter(int target, int pname, [Out] float[] @params) {
			unsafe {
				fixed (float* fp_params = @params)
				{
					if      (Delegates.pglGetTexParameterfv != null)
						Delegates.pglGetTexParameterfv(target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetTexParameter cannot be found");
				}
			}
			LogProc("glGetTexParameterfv({0}, {1}, {2})", target, pname, @params);
		}

		/// <summary>
		/// Binding for glGetTexParameterfv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void GetTexParameter(int target, int pname, out float @params) {
			unsafe {
				fixed (float* fp_params = &@params)
				{
					if      (Delegates.pglGetTexParameterfv != null)
						Delegates.pglGetTexParameterfv(target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetTexParameter cannot be found");
				}
			}
			LogProc("glGetTexParameterfv({0}, {1}, {2})", target, pname, @params);
		}
		
		/// <summary>
		/// Binding for glGetTexParameterfv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void GetTexParameter(int target, int pname, float* @params) {
			unsafe {
				if      (Delegates.pglGetTexParameterfv != null)
					Delegates.pglGetTexParameterfv(target, pname, @params);
				else
					throw new InvalidOperationException("binding point GetTexParameter cannot be found");
			}
			LogProc("glGetTexParameterfv({0}, {1}, {2})", target, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetTexParameterIiv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void GetTexParameterI(int target, int pname, [Out] int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglGetTexParameterIiv != null)
						Delegates.pglGetTexParameterIiv(target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetTexParameterI cannot be found");
				}
			}
			LogProc("glGetTexParameterIiv({0}, {1}, {2})", target, pname, @params);
		}

		/// <summary>
		/// Binding for glGetTexParameterIiv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void GetTexParameterI(int target, int pname, out int @params) {
			unsafe {
				fixed (int* fp_params = &@params)
				{
					if      (Delegates.pglGetTexParameterIiv != null)
						Delegates.pglGetTexParameterIiv(target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetTexParameterI cannot be found");
				}
			}
			LogProc("glGetTexParameterIiv({0}, {1}, {2})", target, pname, @params);
		}
		
		/// <summary>
		/// Binding for glGetTexParameterIiv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void GetTexParameterI(int target, int pname, int* @params) {
			unsafe {
				if      (Delegates.pglGetTexParameterIiv != null)
					Delegates.pglGetTexParameterIiv(target, pname, @params);
				else
					throw new InvalidOperationException("binding point GetTexParameterI cannot be found");
			}
			LogProc("glGetTexParameterIiv({0}, {1}, {2})", target, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetTexParameterIuiv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.UInt32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void GetTexParameterI(int target, int pname, [Out] UInt32[] @params) {
			unsafe {
				fixed (UInt32* fp_params = @params)
				{
					if      (Delegates.pglGetTexParameterIuiv != null)
						Delegates.pglGetTexParameterIuiv(target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetTexParameterI cannot be found");
				}
			}
			LogProc("glGetTexParameterIuiv({0}, {1}, {2})", target, pname, @params);
		}

		/// <summary>
		/// Binding for glGetTexParameterIuiv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void GetTexParameterI(int target, int pname, out UInt32 @params) {
			unsafe {
				fixed (UInt32* fp_params = &@params)
				{
					if      (Delegates.pglGetTexParameterIuiv != null)
						Delegates.pglGetTexParameterIuiv(target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetTexParameterI cannot be found");
				}
			}
			LogProc("glGetTexParameterIuiv({0}, {1}, {2})", target, pname, @params);
		}
		
		/// <summary>
		/// Binding for glGetTexParameterIuiv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void GetTexParameterI(int target, int pname, UInt32* @params) {
			unsafe {
				if      (Delegates.pglGetTexParameterIuiv != null)
					Delegates.pglGetTexParameterIuiv(target, pname, @params);
				else
					throw new InvalidOperationException("binding point GetTexParameterI cannot be found");
			}
			LogProc("glGetTexParameterIuiv({0}, {1}, {2})", target, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetTexParameteriv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void GetTexParameter(int target, int pname, [Out] int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglGetTexParameteriv != null)
						Delegates.pglGetTexParameteriv(target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetTexParameter cannot be found");
				}
			}
			LogProc("glGetTexParameteriv({0}, {1}, {2})", target, pname, @params);
		}

		/// <summary>
		/// Binding for glGetTexParameteriv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void GetTexParameter(int target, int pname, out int @params) {
			unsafe {
				fixed (int* fp_params = &@params)
				{
					if      (Delegates.pglGetTexParameteriv != null)
						Delegates.pglGetTexParameteriv(target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetTexParameter cannot be found");
				}
			}
			LogProc("glGetTexParameteriv({0}, {1}, {2})", target, pname, @params);
		}
		
		/// <summary>
		/// Binding for glGetTexParameteriv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void GetTexParameter(int target, int pname, int* @params) {
			unsafe {
				if      (Delegates.pglGetTexParameteriv != null)
					Delegates.pglGetTexParameteriv(target, pname, @params);
				else
					throw new InvalidOperationException("binding point GetTexParameter cannot be found");
			}
			LogProc("glGetTexParameteriv({0}, {1}, {2})", target, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetTransformFeedbackVarying function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="bufSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="length">
		/// A <see cref="T:System.Int32"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// <param name="size">
		/// A <see cref="T:System.Int32"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// <param name="name">
		/// A <see cref="T:System.Text.StringBuilder"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void GetTransformFeedbackVarying(UInt32 program, UInt32 index, Int32 bufSize, [Out] out Int32 length, [Out] out Int32 size, [Out] out int type, [Out] StringBuilder name) {
			unsafe {
				fixed (Int32* fp_length = &length)
				fixed (Int32* fp_size = &size)
				fixed (int* fp_type = &type)
				{
					if      (Delegates.pglGetTransformFeedbackVarying != null)
						Delegates.pglGetTransformFeedbackVarying(program, index, bufSize, fp_length, fp_size, fp_type, name);
					else
						throw new InvalidOperationException("binding point GetTransformFeedbackVarying cannot be found");
				}
			}
			LogProc("glGetTransformFeedbackVarying({0}, {1}, {2}, {3}, {4}, {5}, {6})", program, index, bufSize, length, size, type, name);
		}

		/// <summary>
		/// Binding for glGetUniformBlockIndex function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="uniformBlockName">
		/// A <see cref="T:System.String"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static UInt32 GetUniformBlockIndex(UInt32 program, string uniformBlockName) {
			UInt32 retvalue;
			if      (Delegates.pglGetUniformBlockIndex != null)
				retvalue = (Delegates.pglGetUniformBlockIndex(program, uniformBlockName));
			else
				throw new InvalidOperationException("binding point GetUniformBlockIndex cannot be found");
			LogProc("glGetUniformBlockIndex({0}, {1}) = {2}", program, uniformBlockName, retvalue);
			return (retvalue);
		}

		/// <summary>
		/// Binding for glGetUniformdv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Double*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetUniform(UInt32 program, int location, [Out] double[] @params) {
			unsafe {
				fixed (double* fp_params = @params)
				{
					if      (Delegates.pglGetUniformdv != null)
						Delegates.pglGetUniformdv(program, location, fp_params);
					else
						throw new InvalidOperationException("binding point GetUniform cannot be found");
				}
			}
			LogProc("glGetUniformdv({0}, {1}, {2})", program, location, @params);
		}

		/// <summary>
		/// Binding for glGetUniformdv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetUniform(UInt32 program, int location, double* @params) {
			unsafe {
				if      (Delegates.pglGetUniformdv != null)
					Delegates.pglGetUniformdv(program, location, @params);
				else
					throw new InvalidOperationException("binding point GetUniform cannot be found");
			}
			LogProc("glGetUniformdv({0}, {1}, {2})", program, location, "@params");
		}
		

		/// <summary>
		/// Binding for glGetUniformfv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void GetUniform(UInt32 program, int location, [Out] float[] @params) {
			unsafe {
				fixed (float* fp_params = @params)
				{
					if      (Delegates.pglGetUniformfv != null)
						Delegates.pglGetUniformfv(program, location, fp_params);
					else
						throw new InvalidOperationException("binding point GetUniform cannot be found");
				}
			}
			LogProc("glGetUniformfv({0}, {1}, {2})", program, location, @params);
		}

		/// <summary>
		/// Binding for glGetUniformfv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void GetUniform(UInt32 program, int location, float* @params) {
			unsafe {
				if      (Delegates.pglGetUniformfv != null)
					Delegates.pglGetUniformfv(program, location, @params);
				else
					throw new InvalidOperationException("binding point GetUniform cannot be found");
			}
			LogProc("glGetUniformfv({0}, {1}, {2})", program, location, "@params");
		}
		

		/// <summary>
		/// Binding for glGetUniformIndices function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="uniformCount">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="uniformNames">
		/// A <see cref="T:System.String[]"/>.
		/// </param>
		/// <param name="uniformIndices">
		/// A <see cref="T:System.UInt32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void GetUniformIndices(UInt32 program, Int32 uniformCount, string[] uniformNames, [Out] UInt32[] uniformIndices) {
			unsafe {
				fixed (UInt32* fp_uniformIndices = uniformIndices)
				{
					if      (Delegates.pglGetUniformIndices != null)
						Delegates.pglGetUniformIndices(program, uniformCount, uniformNames, fp_uniformIndices);
					else
						throw new InvalidOperationException("binding point GetUniformIndices cannot be found");
				}
			}
			LogProc("glGetUniformIndices({0}, {1}, {2}, {3})", program, uniformCount, uniformNames, uniformIndices);
		}

		/// <summary>
		/// Binding for glGetUniformIndices function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="uniformCount">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="uniformNames">
		/// A <see cref="T:System.String[]"/>.
		/// </param>
		/// <param name="uniformIndices">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void GetUniformIndices(UInt32 program, Int32 uniformCount, string[] uniformNames, out UInt32 uniformIndices) {
			unsafe {
				fixed (UInt32* fp_uniformIndices = &uniformIndices)
				{
					if      (Delegates.pglGetUniformIndices != null)
						Delegates.pglGetUniformIndices(program, uniformCount, uniformNames, fp_uniformIndices);
					else
						throw new InvalidOperationException("binding point GetUniformIndices cannot be found");
				}
			}
			LogProc("glGetUniformIndices({0}, {1}, {2}, {3})", program, uniformCount, uniformNames, uniformIndices);
		}
		
		/// <summary>
		/// Binding for glGetUniformIndices function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="uniformCount">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="uniformNames">
		/// A <see cref="T:System.String[]"/>.
		/// </param>
		/// <param name="uniformIndices">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void GetUniformIndices(UInt32 program, Int32 uniformCount, string[] uniformNames, UInt32* uniformIndices) {
			unsafe {
				if      (Delegates.pglGetUniformIndices != null)
					Delegates.pglGetUniformIndices(program, uniformCount, uniformNames, uniformIndices);
				else
					throw new InvalidOperationException("binding point GetUniformIndices cannot be found");
			}
			LogProc("glGetUniformIndices({0}, {1}, {2}, {3})", program, uniformCount, uniformNames, "uniformIndices");
		}
		

		/// <summary>
		/// Binding for glGetUniformiv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void GetUniform(UInt32 program, int location, [Out] int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglGetUniformiv != null)
						Delegates.pglGetUniformiv(program, location, fp_params);
					else
						throw new InvalidOperationException("binding point GetUniform cannot be found");
				}
			}
			LogProc("glGetUniformiv({0}, {1}, {2})", program, location, @params);
		}

		/// <summary>
		/// Binding for glGetUniformiv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void GetUniform(UInt32 program, int location, int* @params) {
			unsafe {
				if      (Delegates.pglGetUniformiv != null)
					Delegates.pglGetUniformiv(program, location, @params);
				else
					throw new InvalidOperationException("binding point GetUniform cannot be found");
			}
			LogProc("glGetUniformiv({0}, {1}, {2})", program, location, "@params");
		}
		

		/// <summary>
		/// Binding for glGetUniformLocation function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="name">
		/// A <see cref="T:System.String"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static int GetUniformLocation(UInt32 program, string name) {
			int retvalue;
			if      (Delegates.pglGetUniformLocation != null)
				retvalue = (Delegates.pglGetUniformLocation(program, name));
			else
				throw new InvalidOperationException("binding point GetUniformLocation cannot be found");
			LogProc("glGetUniformLocation({0}, {1}) = {2}", program, name, retvalue);
			return (retvalue);
		}

		/// <summary>
		/// Binding for glGetUniformSubroutineuiv function.
		/// </summary>
		/// <param name="shadertype">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.UInt32"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetUniformSubroutine(int shadertype, int location, [Out] out UInt32 @params) {
			unsafe {
				fixed (UInt32* fp_params = &@params)
				{
					if      (Delegates.pglGetUniformSubroutineuiv != null)
						Delegates.pglGetUniformSubroutineuiv(shadertype, location, fp_params);
					else
						throw new InvalidOperationException("binding point GetUniformSubroutine cannot be found");
				}
			}
			LogProc("glGetUniformSubroutineuiv({0}, {1}, {2})", shadertype, location, @params);
		}

		/// <summary>
		/// Binding for glGetUniformuiv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.UInt32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void GetUniform(UInt32 program, int location, [Out] UInt32[] @params) {
			unsafe {
				fixed (UInt32* fp_params = @params)
				{
					if      (Delegates.pglGetUniformuiv != null)
						Delegates.pglGetUniformuiv(program, location, fp_params);
					else
						throw new InvalidOperationException("binding point GetUniform cannot be found");
				}
			}
			LogProc("glGetUniformuiv({0}, {1}, {2})", program, location, @params);
		}

		/// <summary>
		/// Binding for glGetUniformuiv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void GetUniform(UInt32 program, int location, UInt32* @params) {
			unsafe {
				if      (Delegates.pglGetUniformuiv != null)
					Delegates.pglGetUniformuiv(program, location, @params);
				else
					throw new InvalidOperationException("binding point GetUniform cannot be found");
			}
			LogProc("glGetUniformuiv({0}, {1}, {2})", program, location, "@params");
		}
		

		/// <summary>
		/// Binding for glGetVertexAttribdv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Double*"/>.
		/// This parameter holds data returned from function.
		/// This array parameter shall have a fixed length of 4 element(s).
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void GetVertexAttrib(UInt32 index, int pname, [Out] double[] @params) {
			unsafe {
				fixed (double* fp_params = @params)
				{
					if      (Delegates.pglGetVertexAttribdv != null)
						Delegates.pglGetVertexAttribdv(index, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetVertexAttrib cannot be found");
				}
			}
			LogProc("glGetVertexAttribdv({0}, {1}, {2})", index, pname, @params);
		}

		/// <summary>
		/// Binding for glGetVertexAttribdv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void GetVertexAttrib(UInt32 index, int pname, double* @params) {
			unsafe {
				if      (Delegates.pglGetVertexAttribdv != null)
					Delegates.pglGetVertexAttribdv(index, pname, @params);
				else
					throw new InvalidOperationException("binding point GetVertexAttrib cannot be found");
			}
			LogProc("glGetVertexAttribdv({0}, {1}, {2})", index, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetVertexAttribfv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single*"/>.
		/// This parameter holds data returned from function.
		/// This array parameter shall have a fixed length of 4 element(s).
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void GetVertexAttrib(UInt32 index, int pname, [Out] float[] @params) {
			unsafe {
				fixed (float* fp_params = @params)
				{
					if      (Delegates.pglGetVertexAttribfv != null)
						Delegates.pglGetVertexAttribfv(index, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetVertexAttrib cannot be found");
				}
			}
			LogProc("glGetVertexAttribfv({0}, {1}, {2})", index, pname, @params);
		}

		/// <summary>
		/// Binding for glGetVertexAttribfv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void GetVertexAttrib(UInt32 index, int pname, float* @params) {
			unsafe {
				if      (Delegates.pglGetVertexAttribfv != null)
					Delegates.pglGetVertexAttribfv(index, pname, @params);
				else
					throw new InvalidOperationException("binding point GetVertexAttrib cannot be found");
			}
			LogProc("glGetVertexAttribfv({0}, {1}, {2})", index, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetVertexAttribIiv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void GetVertexAttribI(UInt32 index, int pname, [Out] out int @params) {
			unsafe {
				fixed (int* fp_params = &@params)
				{
					if      (Delegates.pglGetVertexAttribIiv != null)
						Delegates.pglGetVertexAttribIiv(index, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetVertexAttribI cannot be found");
				}
			}
			LogProc("glGetVertexAttribIiv({0}, {1}, {2})", index, pname, @params);
		}

		/// <summary>
		/// Binding for glGetVertexAttribIuiv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.UInt32"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void GetVertexAttribI(UInt32 index, int pname, [Out] out UInt32 @params) {
			unsafe {
				fixed (UInt32* fp_params = &@params)
				{
					if      (Delegates.pglGetVertexAttribIuiv != null)
						Delegates.pglGetVertexAttribIuiv(index, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetVertexAttribI cannot be found");
				}
			}
			LogProc("glGetVertexAttribIuiv({0}, {1}, {2})", index, pname, @params);
		}

		/// <summary>
		/// Binding for glGetVertexAttribiv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// This array parameter shall have a fixed length of 4 element(s).
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void GetVertexAttrib(UInt32 index, int pname, [Out] int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglGetVertexAttribiv != null)
						Delegates.pglGetVertexAttribiv(index, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetVertexAttrib cannot be found");
				}
			}
			LogProc("glGetVertexAttribiv({0}, {1}, {2})", index, pname, @params);
		}

		/// <summary>
		/// Binding for glGetVertexAttribiv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void GetVertexAttrib(UInt32 index, int pname, int* @params) {
			unsafe {
				if      (Delegates.pglGetVertexAttribiv != null)
					Delegates.pglGetVertexAttribiv(index, pname, @params);
				else
					throw new InvalidOperationException("binding point GetVertexAttrib cannot be found");
			}
			LogProc("glGetVertexAttribiv({0}, {1}, {2})", index, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetVertexAttribLdv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Double*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void GetVertexAttribL(UInt32 index, int pname, [Out] double[] @params) {
			unsafe {
				fixed (double* fp_params = @params)
				{
					if      (Delegates.pglGetVertexAttribLdv != null)
						Delegates.pglGetVertexAttribLdv(index, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetVertexAttribL cannot be found");
				}
			}
			LogProc("glGetVertexAttribLdv({0}, {1}, {2})", index, pname, @params);
		}

		/// <summary>
		/// Binding for glGetVertexAttribLdv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void GetVertexAttribL(UInt32 index, int pname, out double @params) {
			unsafe {
				fixed (double* fp_params = &@params)
				{
					if      (Delegates.pglGetVertexAttribLdv != null)
						Delegates.pglGetVertexAttribLdv(index, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetVertexAttribL cannot be found");
				}
			}
			LogProc("glGetVertexAttribLdv({0}, {1}, {2})", index, pname, @params);
		}
		
		/// <summary>
		/// Binding for glGetVertexAttribLdv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void GetVertexAttribL(UInt32 index, int pname, double* @params) {
			unsafe {
				if      (Delegates.pglGetVertexAttribLdv != null)
					Delegates.pglGetVertexAttribLdv(index, pname, @params);
				else
					throw new InvalidOperationException("binding point GetVertexAttribL cannot be found");
			}
			LogProc("glGetVertexAttribLdv({0}, {1}, {2})", index, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetVertexAttribPointerv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pointer">
		/// A <see cref="T:System.IntPtr"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void GetVertexAttribPointer(UInt32 index, int pname, [Out] out IntPtr pointer) {
			unsafe {
				fixed (IntPtr* fp_pointer = &pointer)
				{
					if      (Delegates.pglGetVertexAttribPointerv != null)
						Delegates.pglGetVertexAttribPointerv(index, pname, fp_pointer);
					else
						throw new InvalidOperationException("binding point GetVertexAttribPointer cannot be found");
				}
			}
			LogProc("glGetVertexAttribPointerv({0}, {1}, {2})", index, pname, pointer);
		}

		/// <summary>
		/// Binding for glHint function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void Hint(int target, int mode) {
			if      (Delegates.pglHint != null)
				Delegates.pglHint(target, mode);
			else
				throw new InvalidOperationException("binding point Hint cannot be found");
			LogProc("glHint({0}, {1})", target, mode);
		}

		/// <summary>
		/// Binding for glHistogram function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="internalformat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="sink">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		/// @deprecated
		public static void Histogram(int target, Int32 width, int internalformat, bool sink) {
			if      (Delegates.pglHistogram != null)
				Delegates.pglHistogram(target, width, internalformat, sink);
			else
				throw new InvalidOperationException("binding point Histogram cannot be found");
			LogProc("glHistogram({0}, {1}, {2}, {3})", target, width, internalformat, sink);
		}

		/// <summary>
		/// Binding for glIndexd function.
		/// </summary>
		/// <param name="c">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Index(double c) {
			if      (Delegates.pglIndexd != null)
				Delegates.pglIndexd(c);
			else
				throw new InvalidOperationException("binding point Index cannot be found");
			LogProc("glIndexd({0})", c);
		}

		/// <summary>
		/// Binding for glIndexdv function.
		/// </summary>
		/// <param name="c">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Index(double[] c) {
			unsafe {
				fixed (double* fp_c = c)
				{
					if      (Delegates.pglIndexdv != null)
						Delegates.pglIndexdv(fp_c);
					else
						throw new InvalidOperationException("binding point Index cannot be found");
				}
			}
			LogProc("glIndexdv({0})", c);
		}

		/// <summary>
		/// Binding for glIndexf function.
		/// </summary>
		/// <param name="c">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Index(float c) {
			if      (Delegates.pglIndexf != null)
				Delegates.pglIndexf(c);
			else
				throw new InvalidOperationException("binding point Index cannot be found");
			LogProc("glIndexf({0})", c);
		}

		/// <summary>
		/// Binding for glIndexfv function.
		/// </summary>
		/// <param name="c">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Index(float[] c) {
			unsafe {
				fixed (float* fp_c = c)
				{
					if      (Delegates.pglIndexfv != null)
						Delegates.pglIndexfv(fp_c);
					else
						throw new InvalidOperationException("binding point Index cannot be found");
				}
			}
			LogProc("glIndexfv({0})", c);
		}

		/// <summary>
		/// Binding for glIndexi function.
		/// </summary>
		/// <param name="c">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Index(int c) {
			if      (Delegates.pglIndexi != null)
				Delegates.pglIndexi(c);
			else
				throw new InvalidOperationException("binding point Index cannot be found");
			LogProc("glIndexi({0})", c);
		}

		/// <summary>
		/// Binding for glIndexiv function.
		/// </summary>
		/// <param name="c">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Index(int[] c) {
			unsafe {
				fixed (int* fp_c = c)
				{
					if      (Delegates.pglIndexiv != null)
						Delegates.pglIndexiv(fp_c);
					else
						throw new InvalidOperationException("binding point Index cannot be found");
				}
			}
			LogProc("glIndexiv({0})", c);
		}

		/// <summary>
		/// Binding for glIndexMask function.
		/// </summary>
		/// <param name="mask">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void IndexMask(UInt32 mask) {
			if      (Delegates.pglIndexMask != null)
				Delegates.pglIndexMask(mask);
			else
				throw new InvalidOperationException("binding point IndexMask cannot be found");
			LogProc("glIndexMask({0})", mask);
		}

		/// <summary>
		/// Binding for glIndexPointer function.
		/// </summary>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="stride">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pointer">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		/// @deprecated
		public static void IndexPointer(int type, Int32 stride, object pointer) {
			GCHandle pp_pointer = GCHandle.Alloc(pointer, GCHandleType.Pinned);
			try {
				if      (Delegates.pglIndexPointer != null)
					Delegates.pglIndexPointer(type, stride, pp_pointer.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point IndexPointer cannot be found");
			} finally {
				pp_pointer.Free();
			}
			LogProc("glIndexPointer({0}, {1}, {2})", type, stride, pointer);
		}

		/// <summary>
		/// Binding for glIndexs function.
		/// </summary>
		/// <param name="c">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Index(Int16 c) {
			if      (Delegates.pglIndexs != null)
				Delegates.pglIndexs(c);
			else
				throw new InvalidOperationException("binding point Index cannot be found");
			LogProc("glIndexs({0})", c);
		}

		/// <summary>
		/// Binding for glIndexsv function.
		/// </summary>
		/// <param name="c">
		/// A <see cref="T:System.Int16*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Index(Int16[] c) {
			unsafe {
				fixed (Int16* fp_c = c)
				{
					if      (Delegates.pglIndexsv != null)
						Delegates.pglIndexsv(fp_c);
					else
						throw new InvalidOperationException("binding point Index cannot be found");
				}
			}
			LogProc("glIndexsv({0})", c);
		}

		/// <summary>
		/// Binding for glIndexub function.
		/// </summary>
		/// <param name="c">
		/// A <see cref="T:System.Byte"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void Index(byte c) {
			if      (Delegates.pglIndexub != null)
				Delegates.pglIndexub(c);
			else
				throw new InvalidOperationException("binding point Index cannot be found");
			LogProc("glIndexub({0})", c);
		}

		/// <summary>
		/// Binding for glIndexubv function.
		/// </summary>
		/// <param name="c">
		/// A <see cref="T:System.Byte*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void Index(byte[] c) {
			unsafe {
				fixed (byte* fp_c = c)
				{
					if      (Delegates.pglIndexubv != null)
						Delegates.pglIndexubv(fp_c);
					else
						throw new InvalidOperationException("binding point Index cannot be found");
				}
			}
			LogProc("glIndexubv({0})", c);
		}

		/// <summary>
		/// Binding for glInitNames function.
		/// </summary>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void InitName() {
			if      (Delegates.pglInitNames != null)
				Delegates.pglInitNames();
			else
				throw new InvalidOperationException("binding point InitName cannot be found");
			LogProc("glInitNames()");
		}

		/// <summary>
		/// Binding for glInterleavedArrays function.
		/// </summary>
		/// <param name="format">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="stride">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pointer">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		/// @deprecated
		public static void InterleavedArrays(int format, Int32 stride, object pointer) {
			GCHandle pp_pointer = GCHandle.Alloc(pointer, GCHandleType.Pinned);
			try {
				if      (Delegates.pglInterleavedArrays != null)
					Delegates.pglInterleavedArrays(format, stride, pp_pointer.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point InterleavedArrays cannot be found");
			} finally {
				pp_pointer.Free();
			}
			LogProc("glInterleavedArrays({0}, {1}, {2})", format, stride, pointer);
		}

		/// <summary>
		/// Binding for glIsBuffer function.
		/// </summary>
		/// <param name="buffer">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.5
		public static bool IsBuffer(UInt32 buffer) {
			bool retvalue;
			if      (Delegates.pglIsBuffer != null)
				retvalue = (Delegates.pglIsBuffer(buffer));
			else
				throw new InvalidOperationException("binding point IsBuffer cannot be found");
			LogProc("glIsBuffer({0}) = {1}", buffer, retvalue);
			return (retvalue);
		}

		/// <summary>
		/// Binding for glIsEnabled function.
		/// </summary>
		/// <param name="cap">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static bool IsEnabled(int cap) {
			bool retvalue;
			if      (Delegates.pglIsEnabled != null)
				retvalue = (Delegates.pglIsEnabled(cap));
			else
				throw new InvalidOperationException("binding point IsEnabled cannot be found");
			LogProc("glIsEnabled({0}) = {1}", cap, retvalue);
			return (retvalue);
		}

		/// <summary>
		/// Binding for glIsEnabledi function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static bool IsEnabledi(int target, UInt32 index) {
			bool retvalue;
			if      (Delegates.pglIsEnabledi != null)
				retvalue = (Delegates.pglIsEnabledi(target, index));
			else
				throw new InvalidOperationException("binding point IsEnabledi cannot be found");
			LogProc("glIsEnabledi({0}, {1}) = {2}", target, index, retvalue);
			return (retvalue);
		}

		/// <summary>
		/// Binding for glIsFramebuffer function.
		/// </summary>
		/// <param name="framebuffer">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static bool IsFramebuffer(UInt32 framebuffer) {
			bool retvalue;
			if      (Delegates.pglIsFramebuffer != null)
				retvalue = (Delegates.pglIsFramebuffer(framebuffer));
			else
				throw new InvalidOperationException("binding point IsFramebuffer cannot be found");
			LogProc("glIsFramebuffer({0}) = {1}", framebuffer, retvalue);
			return (retvalue);
		}

		/// <summary>
		/// Binding for glIsList function.
		/// </summary>
		/// <param name="list">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static bool IsList(UInt32 list) {
			bool retvalue;
			if      (Delegates.pglIsList != null)
				retvalue = (Delegates.pglIsList(list));
			else
				throw new InvalidOperationException("binding point IsList cannot be found");
			LogProc("glIsList({0}) = {1}", list, retvalue);
			return (retvalue);
		}

		/// <summary>
		/// Binding for glIsProgram function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static bool IsProgram(UInt32 program) {
			bool retvalue;
			if      (Delegates.pglIsProgram != null)
				retvalue = (Delegates.pglIsProgram(program));
			else
				throw new InvalidOperationException("binding point IsProgram cannot be found");
			LogProc("glIsProgram({0}) = {1}", program, retvalue);
			return (retvalue);
		}

		/// <summary>
		/// Binding for glIsProgramPipeline function.
		/// </summary>
		/// <param name="pipeline">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static bool IsProgramPipeline(UInt32 pipeline) {
			bool retvalue;
			if      (Delegates.pglIsProgramPipeline != null)
				retvalue = (Delegates.pglIsProgramPipeline(pipeline));
			else
				throw new InvalidOperationException("binding point IsProgramPipeline cannot be found");
			LogProc("glIsProgramPipeline({0}) = {1}", pipeline, retvalue);
			return (retvalue);
		}

		/// <summary>
		/// Binding for glIsQuery function.
		/// </summary>
		/// <param name="id">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.5
		public static bool IsQuery(UInt32 id) {
			bool retvalue;
			if      (Delegates.pglIsQuery != null)
				retvalue = (Delegates.pglIsQuery(id));
			else
				throw new InvalidOperationException("binding point IsQuery cannot be found");
			LogProc("glIsQuery({0}) = {1}", id, retvalue);
			return (retvalue);
		}

		/// <summary>
		/// Binding for glIsRenderbuffer function.
		/// </summary>
		/// <param name="renderbuffer">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static bool IsRenderbuffer(UInt32 renderbuffer) {
			bool retvalue;
			if      (Delegates.pglIsRenderbuffer != null)
				retvalue = (Delegates.pglIsRenderbuffer(renderbuffer));
			else
				throw new InvalidOperationException("binding point IsRenderbuffer cannot be found");
			LogProc("glIsRenderbuffer({0}) = {1}", renderbuffer, retvalue);
			return (retvalue);
		}

		/// <summary>
		/// Binding for glIsSampler function.
		/// </summary>
		/// <param name="sampler">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static bool IsSampler(UInt32 sampler) {
			bool retvalue;
			if      (Delegates.pglIsSampler != null)
				retvalue = (Delegates.pglIsSampler(sampler));
			else
				throw new InvalidOperationException("binding point IsSampler cannot be found");
			LogProc("glIsSampler({0}) = {1}", sampler, retvalue);
			return (retvalue);
		}

		/// <summary>
		/// Binding for glIsShader function.
		/// </summary>
		/// <param name="shader">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static bool IsShader(UInt32 shader) {
			bool retvalue;
			if      (Delegates.pglIsShader != null)
				retvalue = (Delegates.pglIsShader(shader));
			else
				throw new InvalidOperationException("binding point IsShader cannot be found");
			LogProc("glIsShader({0}) = {1}", shader, retvalue);
			return (retvalue);
		}

		/// <summary>
		/// Binding for glIsSync function.
		/// </summary>
		/// <param name="sync">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static bool IsSync(int sync) {
			bool retvalue;
			if      (Delegates.pglIsSync != null)
				retvalue = (Delegates.pglIsSync(sync));
			else
				throw new InvalidOperationException("binding point IsSync cannot be found");
			LogProc("glIsSync({0}) = {1}", sync, retvalue);
			return (retvalue);
		}

		/// <summary>
		/// Binding for glIsTexture function.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static bool IsTexture(UInt32 texture) {
			bool retvalue;
			if      (Delegates.pglIsTexture != null)
				retvalue = (Delegates.pglIsTexture(texture));
			else
				throw new InvalidOperationException("binding point IsTexture cannot be found");
			LogProc("glIsTexture({0}) = {1}", texture, retvalue);
			return (retvalue);
		}

		/// <summary>
		/// Binding for glIsTransformFeedback function.
		/// </summary>
		/// <param name="id">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static bool IsTransformFeedback(UInt32 id) {
			bool retvalue;
			if      (Delegates.pglIsTransformFeedback != null)
				retvalue = (Delegates.pglIsTransformFeedback(id));
			else
				throw new InvalidOperationException("binding point IsTransformFeedback cannot be found");
			LogProc("glIsTransformFeedback({0}) = {1}", id, retvalue);
			return (retvalue);
		}

		/// <summary>
		/// Binding for glIsVertexArray function.
		/// </summary>
		/// <param name="array">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static bool IsVertexArray(UInt32 array) {
			bool retvalue;
			if      (Delegates.pglIsVertexArray != null)
				retvalue = (Delegates.pglIsVertexArray(array));
			else
				throw new InvalidOperationException("binding point IsVertexArray cannot be found");
			LogProc("glIsVertexArray({0}) = {1}", array, retvalue);
			return (retvalue);
		}

		/// <summary>
		/// Binding for glLightf function.
		/// </summary>
		/// <param name="light">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="param">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Light(int light, int pname, float param) {
			if      (Delegates.pglLightf != null)
				Delegates.pglLightf(light, pname, param);
			else
				throw new InvalidOperationException("binding point Light cannot be found");
			LogProc("glLightf({0}, {1}, {2})", light, pname, param);
		}

		/// <summary>
		/// Binding for glLightfv function.
		/// </summary>
		/// <param name="light">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Light(int light, int pname, float[] @params) {
			unsafe {
				fixed (float* fp_params = @params)
				{
					if      (Delegates.pglLightfv != null)
						Delegates.pglLightfv(light, pname, fp_params);
					else
						throw new InvalidOperationException("binding point Light cannot be found");
				}
			}
			LogProc("glLightfv({0}, {1}, {2})", light, pname, @params);
		}

		/// <summary>
		/// Binding for glLighti function.
		/// </summary>
		/// <param name="light">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="param">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Light(int light, int pname, int param) {
			if      (Delegates.pglLighti != null)
				Delegates.pglLighti(light, pname, param);
			else
				throw new InvalidOperationException("binding point Light cannot be found");
			LogProc("glLighti({0}, {1}, {2})", light, pname, param);
		}

		/// <summary>
		/// Binding for glLightiv function.
		/// </summary>
		/// <param name="light">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Light(int light, int pname, int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglLightiv != null)
						Delegates.pglLightiv(light, pname, fp_params);
					else
						throw new InvalidOperationException("binding point Light cannot be found");
				}
			}
			LogProc("glLightiv({0}, {1}, {2})", light, pname, @params);
		}

		/// <summary>
		/// Binding for glLightModelf function.
		/// </summary>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="param">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void LightModel(int pname, float param) {
			if      (Delegates.pglLightModelf != null)
				Delegates.pglLightModelf(pname, param);
			else
				throw new InvalidOperationException("binding point LightModel cannot be found");
			LogProc("glLightModelf({0}, {1})", pname, param);
		}

		/// <summary>
		/// Binding for glLightModelfv function.
		/// </summary>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void LightModel(int pname, float[] @params) {
			unsafe {
				fixed (float* fp_params = @params)
				{
					if      (Delegates.pglLightModelfv != null)
						Delegates.pglLightModelfv(pname, fp_params);
					else
						throw new InvalidOperationException("binding point LightModel cannot be found");
				}
			}
			LogProc("glLightModelfv({0}, {1})", pname, @params);
		}

		/// <summary>
		/// Binding for glLightModelfv function.
		/// </summary>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void LightModel(int pname, float* @params) {
			unsafe {
				if      (Delegates.pglLightModelfv != null)
					Delegates.pglLightModelfv(pname, @params);
				else
					throw new InvalidOperationException("binding point LightModel cannot be found");
			}
			LogProc("glLightModelfv({0}, {1})", pname, "@params");
		}
		

		/// <summary>
		/// Binding for glLightModeli function.
		/// </summary>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="param">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void LightModel(int pname, int param) {
			if      (Delegates.pglLightModeli != null)
				Delegates.pglLightModeli(pname, param);
			else
				throw new InvalidOperationException("binding point LightModel cannot be found");
			LogProc("glLightModeli({0}, {1})", pname, param);
		}

		/// <summary>
		/// Binding for glLightModeliv function.
		/// </summary>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void LightModel(int pname, int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglLightModeliv != null)
						Delegates.pglLightModeliv(pname, fp_params);
					else
						throw new InvalidOperationException("binding point LightModel cannot be found");
				}
			}
			LogProc("glLightModeliv({0}, {1})", pname, @params);
		}

		/// <summary>
		/// Binding for glLightModeliv function.
		/// </summary>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void LightModel(int pname, int* @params) {
			unsafe {
				if      (Delegates.pglLightModeliv != null)
					Delegates.pglLightModeliv(pname, @params);
				else
					throw new InvalidOperationException("binding point LightModel cannot be found");
			}
			LogProc("glLightModeliv({0}, {1})", pname, "@params");
		}
		

		/// <summary>
		/// Binding for glLineStipple function.
		/// </summary>
		/// <param name="factor">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pattern">
		/// A <see cref="T:System.UInt16"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void LineStipple(int factor, UInt16 pattern) {
			if      (Delegates.pglLineStipple != null)
				Delegates.pglLineStipple(factor, pattern);
			else
				throw new InvalidOperationException("binding point LineStipple cannot be found");
			LogProc("glLineStipple({0}, {1})", factor, pattern);
		}

		/// <summary>
		/// Binding for glLineWidth function.
		/// </summary>
		/// <param name="width">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void LineWidth(float width) {
			if      (Delegates.pglLineWidth != null)
				Delegates.pglLineWidth(width);
			else
				throw new InvalidOperationException("binding point LineWidth cannot be found");
			LogProc("glLineWidth({0})", width);
		}

		/// <summary>
		/// Binding for glLinkProgram function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void LinkProgram(UInt32 program) {
			if      (Delegates.pglLinkProgram != null)
				Delegates.pglLinkProgram(program);
			else
				throw new InvalidOperationException("binding point LinkProgram cannot be found");
			LogProc("glLinkProgram({0})", program);
		}

		/// <summary>
		/// Binding for glListBase function.
		/// </summary>
		/// <param name="base">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void ListBase(UInt32 @base) {
			if      (Delegates.pglListBase != null)
				Delegates.pglListBase(@base);
			else
				throw new InvalidOperationException("binding point ListBase cannot be found");
			LogProc("glListBase({0})", @base);
		}

		/// <summary>
		/// Binding for glLoadIdentity function.
		/// </summary>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void LoadIdentity() {
			if      (Delegates.pglLoadIdentity != null)
				Delegates.pglLoadIdentity();
			else
				throw new InvalidOperationException("binding point LoadIdentity cannot be found");
			LogProc("glLoadIdentity()");
		}

		/// <summary>
		/// Binding for glLoadMatrixd function.
		/// </summary>
		/// <param name="m">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void LoadMatrix(double[] m) {
			unsafe {
				fixed (double* fp_m = m)
				{
					if      (Delegates.pglLoadMatrixd != null)
						Delegates.pglLoadMatrixd(fp_m);
					else
						throw new InvalidOperationException("binding point LoadMatrix cannot be found");
				}
			}
			LogProc("glLoadMatrixd({0})", m);
		}

		/// <summary>
		/// Binding for glLoadMatrixd function.
		/// </summary>
		/// <param name="m">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void LoadMatrix(double* m) {
			unsafe {
				if      (Delegates.pglLoadMatrixd != null)
					Delegates.pglLoadMatrixd(m);
				else
					throw new InvalidOperationException("binding point LoadMatrix cannot be found");
			}
			LogProc("glLoadMatrixd({0})", "m");
		}
		

		/// <summary>
		/// Binding for glLoadMatrixf function.
		/// </summary>
		/// <param name="m">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void LoadMatrix(float[] m) {
			unsafe {
				fixed (float* fp_m = m)
				{
					if      (Delegates.pglLoadMatrixf != null)
						Delegates.pglLoadMatrixf(fp_m);
					else
						throw new InvalidOperationException("binding point LoadMatrix cannot be found");
				}
			}
			LogProc("glLoadMatrixf({0})", m);
		}

		/// <summary>
		/// Binding for glLoadMatrixf function.
		/// </summary>
		/// <param name="m">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void LoadMatrix(float* m) {
			unsafe {
				if      (Delegates.pglLoadMatrixf != null)
					Delegates.pglLoadMatrixf(m);
				else
					throw new InvalidOperationException("binding point LoadMatrix cannot be found");
			}
			LogProc("glLoadMatrixf({0})", "m");
		}
		

		/// <summary>
		/// Binding for glLoadName function.
		/// </summary>
		/// <param name="name">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void LoadName(UInt32 name) {
			if      (Delegates.pglLoadName != null)
				Delegates.pglLoadName(name);
			else
				throw new InvalidOperationException("binding point LoadName cannot be found");
			LogProc("glLoadName({0})", name);
		}

		/// <summary>
		/// Binding for glLoadTransposeMatrixd function.
		/// </summary>
		/// <param name="m">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		/// @deprecated
		public static void LoadTransposeMatrix(double[] m) {
			unsafe {
				fixed (double* fp_m = m)
				{
					if      (Delegates.pglLoadTransposeMatrixd != null)
						Delegates.pglLoadTransposeMatrixd(fp_m);
					else
						throw new InvalidOperationException("binding point LoadTransposeMatrix cannot be found");
				}
			}
			LogProc("glLoadTransposeMatrixd({0})", m);
		}

		/// <summary>
		/// Binding for glLoadTransposeMatrixd function.
		/// </summary>
		/// <param name="m">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		/// @deprecated
		public static void LoadTransposeMatrix(double* m) {
			unsafe {
				if      (Delegates.pglLoadTransposeMatrixd != null)
					Delegates.pglLoadTransposeMatrixd(m);
				else
					throw new InvalidOperationException("binding point LoadTransposeMatrix cannot be found");
			}
			LogProc("glLoadTransposeMatrixd({0})", "m");
		}
		

		/// <summary>
		/// Binding for glLoadTransposeMatrixf function.
		/// </summary>
		/// <param name="m">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		/// @deprecated
		public static void LoadTransposeMatrix(float[] m) {
			unsafe {
				fixed (float* fp_m = m)
				{
					if      (Delegates.pglLoadTransposeMatrixf != null)
						Delegates.pglLoadTransposeMatrixf(fp_m);
					else
						throw new InvalidOperationException("binding point LoadTransposeMatrix cannot be found");
				}
			}
			LogProc("glLoadTransposeMatrixf({0})", m);
		}

		/// <summary>
		/// Binding for glLoadTransposeMatrixf function.
		/// </summary>
		/// <param name="m">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		/// @deprecated
		public static void LoadTransposeMatrix(float* m) {
			unsafe {
				if      (Delegates.pglLoadTransposeMatrixf != null)
					Delegates.pglLoadTransposeMatrixf(m);
				else
					throw new InvalidOperationException("binding point LoadTransposeMatrix cannot be found");
			}
			LogProc("glLoadTransposeMatrixf({0})", "m");
		}
		

		/// <summary>
		/// Binding for glLogicOp function.
		/// </summary>
		/// <param name="opcode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void LogicOp(int opcode) {
			if      (Delegates.pglLogicOp != null)
				Delegates.pglLogicOp(opcode);
			else
				throw new InvalidOperationException("binding point LogicOp cannot be found");
			LogProc("glLogicOp({0})", opcode);
		}

		/// <summary>
		/// Binding for glMap1d function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="u1">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="u2">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="stride">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="order">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="points">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Map1(int target, double u1, double u2, int stride, int order, double[] points) {
			unsafe {
				fixed (double* fp_points = points)
				{
					if      (Delegates.pglMap1d != null)
						Delegates.pglMap1d(target, u1, u2, stride, order, fp_points);
					else
						throw new InvalidOperationException("binding point Map1 cannot be found");
				}
			}
			LogProc("glMap1d({0}, {1}, {2}, {3}, {4}, {5})", target, u1, u2, stride, order, points);
		}

		/// <summary>
		/// Binding for glMap1f function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="u1">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="u2">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="stride">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="order">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="points">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Map1(int target, float u1, float u2, int stride, int order, float[] points) {
			unsafe {
				fixed (float* fp_points = points)
				{
					if      (Delegates.pglMap1f != null)
						Delegates.pglMap1f(target, u1, u2, stride, order, fp_points);
					else
						throw new InvalidOperationException("binding point Map1 cannot be found");
				}
			}
			LogProc("glMap1f({0}, {1}, {2}, {3}, {4}, {5})", target, u1, u2, stride, order, points);
		}

		/// <summary>
		/// Binding for glMap2d function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="u1">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="u2">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="ustride">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="uorder">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v1">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="v2">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="vstride">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="vorder">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="points">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Map2(int target, double u1, double u2, int ustride, int uorder, double v1, double v2, int vstride, int vorder, double[] points) {
			unsafe {
				fixed (double* fp_points = points)
				{
					if      (Delegates.pglMap2d != null)
						Delegates.pglMap2d(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, fp_points);
					else
						throw new InvalidOperationException("binding point Map2 cannot be found");
				}
			}
			LogProc("glMap2d({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9})", target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points);
		}

		/// <summary>
		/// Binding for glMap2f function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="u1">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="u2">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="ustride">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="uorder">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v1">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="v2">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="vstride">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="vorder">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="points">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Map2(int target, float u1, float u2, int ustride, int uorder, float v1, float v2, int vstride, int vorder, float[] points) {
			unsafe {
				fixed (float* fp_points = points)
				{
					if      (Delegates.pglMap2f != null)
						Delegates.pglMap2f(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, fp_points);
					else
						throw new InvalidOperationException("binding point Map2 cannot be found");
				}
			}
			LogProc("glMap2f({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9})", target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points);
		}

		/// <summary>
		/// Binding for glMapBuffer function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="access">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.5
		public static IntPtr MapBuffer(int target, int access) {
			IntPtr retvalue;
			if      (Delegates.pglMapBuffer != null)
				retvalue = (Delegates.pglMapBuffer(target, access));
			else
				throw new InvalidOperationException("binding point MapBuffer cannot be found");
			LogProc("glMapBuffer({0}, {1}) = {2}", target, access, retvalue);
			return (retvalue);
		}

		/// <summary>
		/// Binding for glMapBufferRange function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="offset">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// <param name="length">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="access">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static IntPtr MapBufferRange(int target, IntPtr offset, UInt32 length, uint access) {
			IntPtr retvalue;
			if      (Delegates.pglMapBufferRange != null)
				retvalue = (Delegates.pglMapBufferRange(target, offset, length, access));
			else
				throw new InvalidOperationException("binding point MapBufferRange cannot be found");
			LogProc("glMapBufferRange({0}, {1}, {2}, {3}) = {4}", target, offset, length, access, retvalue);
			return (retvalue);
		}

		/// <summary>
		/// Binding for glMapGrid1d function.
		/// </summary>
		/// <param name="un">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="u1">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="u2">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void MapGrid1(int un, double u1, double u2) {
			if      (Delegates.pglMapGrid1d != null)
				Delegates.pglMapGrid1d(un, u1, u2);
			else
				throw new InvalidOperationException("binding point MapGrid1 cannot be found");
			LogProc("glMapGrid1d({0}, {1}, {2})", un, u1, u2);
		}

		/// <summary>
		/// Binding for glMapGrid1f function.
		/// </summary>
		/// <param name="un">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="u1">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="u2">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void MapGrid1(int un, float u1, float u2) {
			if      (Delegates.pglMapGrid1f != null)
				Delegates.pglMapGrid1f(un, u1, u2);
			else
				throw new InvalidOperationException("binding point MapGrid1 cannot be found");
			LogProc("glMapGrid1f({0}, {1}, {2})", un, u1, u2);
		}

		/// <summary>
		/// Binding for glMapGrid2d function.
		/// </summary>
		/// <param name="un">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="u1">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="u2">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="vn">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v1">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="v2">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void MapGrid2(int un, double u1, double u2, int vn, double v1, double v2) {
			if      (Delegates.pglMapGrid2d != null)
				Delegates.pglMapGrid2d(un, u1, u2, vn, v1, v2);
			else
				throw new InvalidOperationException("binding point MapGrid2 cannot be found");
			LogProc("glMapGrid2d({0}, {1}, {2}, {3}, {4}, {5})", un, u1, u2, vn, v1, v2);
		}

		/// <summary>
		/// Binding for glMapGrid2f function.
		/// </summary>
		/// <param name="un">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="u1">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="u2">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="vn">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v1">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="v2">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void MapGrid2(int un, float u1, float u2, int vn, float v1, float v2) {
			if      (Delegates.pglMapGrid2f != null)
				Delegates.pglMapGrid2f(un, u1, u2, vn, v1, v2);
			else
				throw new InvalidOperationException("binding point MapGrid2 cannot be found");
			LogProc("glMapGrid2f({0}, {1}, {2}, {3}, {4}, {5})", un, u1, u2, vn, v1, v2);
		}

		/// <summary>
		/// Binding for glMaterialf function.
		/// </summary>
		/// <param name="face">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="param">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Material(int face, int pname, float param) {
			if      (Delegates.pglMaterialf != null)
				Delegates.pglMaterialf(face, pname, param);
			else
				throw new InvalidOperationException("binding point Material cannot be found");
			LogProc("glMaterialf({0}, {1}, {2})", face, pname, param);
		}

		/// <summary>
		/// Binding for glMaterialfv function.
		/// </summary>
		/// <param name="face">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Material(int face, int pname, float[] @params) {
			unsafe {
				fixed (float* fp_params = @params)
				{
					if      (Delegates.pglMaterialfv != null)
						Delegates.pglMaterialfv(face, pname, fp_params);
					else
						throw new InvalidOperationException("binding point Material cannot be found");
				}
			}
			LogProc("glMaterialfv({0}, {1}, {2})", face, pname, @params);
		}

		/// <summary>
		/// Binding for glMateriali function.
		/// </summary>
		/// <param name="face">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="param">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Material(int face, int pname, int param) {
			if      (Delegates.pglMateriali != null)
				Delegates.pglMateriali(face, pname, param);
			else
				throw new InvalidOperationException("binding point Material cannot be found");
			LogProc("glMateriali({0}, {1}, {2})", face, pname, param);
		}

		/// <summary>
		/// Binding for glMaterialiv function.
		/// </summary>
		/// <param name="face">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Material(int face, int pname, int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglMaterialiv != null)
						Delegates.pglMaterialiv(face, pname, fp_params);
					else
						throw new InvalidOperationException("binding point Material cannot be found");
				}
			}
			LogProc("glMaterialiv({0}, {1}, {2})", face, pname, @params);
		}

		/// <summary>
		/// Binding for glMatrixMode function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void MatrixMode(int mode) {
			if      (Delegates.pglMatrixMode != null)
				Delegates.pglMatrixMode(mode);
			else
				throw new InvalidOperationException("binding point MatrixMode cannot be found");
			LogProc("glMatrixMode({0})", mode);
		}

		/// <summary>
		/// Binding for glMemoryBarrier function.
		/// </summary>
		/// <param name="barriers">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.2
		public static void MemoryBarrier(uint barriers) {
			if      (Delegates.pglMemoryBarrier != null)
				Delegates.pglMemoryBarrier(barriers);
			else
				throw new InvalidOperationException("binding point MemoryBarrier cannot be found");
			LogProc("glMemoryBarrier({0})", barriers);
		}

		/// <summary>
		/// Binding for glMinmax function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="internalformat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="sink">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		/// @deprecated
		public static void Minmax(int target, int internalformat, bool sink) {
			if      (Delegates.pglMinmax != null)
				Delegates.pglMinmax(target, internalformat, sink);
			else
				throw new InvalidOperationException("binding point Minmax cannot be found");
			LogProc("glMinmax({0}, {1}, {2})", target, internalformat, sink);
		}

		/// <summary>
		/// Binding for glMinSampleShading function.
		/// </summary>
		/// <param name="value">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void MinSampleShading(float value) {
			if      (Delegates.pglMinSampleShading != null)
				Delegates.pglMinSampleShading(value);
			else
				throw new InvalidOperationException("binding point MinSampleShading cannot be found");
			LogProc("glMinSampleShading({0})", value);
		}

		/// <summary>
		/// Binding for glMultiDrawArrays function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="first">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// <param name="primcount">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.4
		public static void MultiDrawArrays(int mode, int[] first, Int32[] count, Int32 primcount) {
			unsafe {
				fixed (int* fp_first = first)
				fixed (Int32* fp_count = count)
				{
					if      (Delegates.pglMultiDrawArrays != null)
						Delegates.pglMultiDrawArrays(mode, fp_first, fp_count, primcount);
					else
						throw new InvalidOperationException("binding point MultiDrawArrays cannot be found");
				}
			}
			LogProc("glMultiDrawArrays({0}, {1}, {2}, {3})", mode, first, count, primcount);
		}

		/// <summary>
		/// Binding for glMultiDrawArrays function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="first">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// <param name="primcount">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.4
		public static void MultiDrawArrays(int mode, int* first, Int32[] count, Int32 primcount) {
			unsafe {
				fixed (Int32* fp_count = count)
				{
					if      (Delegates.pglMultiDrawArrays != null)
						Delegates.pglMultiDrawArrays(mode, first, fp_count, primcount);
					else
						throw new InvalidOperationException("binding point MultiDrawArrays cannot be found");
				}
			}
			LogProc("glMultiDrawArrays({0}, {1}, {2}, {3})", mode, "first", count, primcount);
		}
		

		/// <summary>
		/// Binding for glMultiDrawElements function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="indices">
		/// A <see cref="T:System.IntPtr*"/>.
		/// </param>
		/// <param name="primcount">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.4
		public static void MultiDrawElements(int mode, Int32[] count, int type, IntPtr[] indices, Int32 primcount) {
			unsafe {
				fixed (Int32* fp_count = count)
				fixed (IntPtr* fp_indices = indices)
				{
					if      (Delegates.pglMultiDrawElements != null)
						Delegates.pglMultiDrawElements(mode, fp_count, type, fp_indices, primcount);
					else
						throw new InvalidOperationException("binding point MultiDrawElements cannot be found");
				}
			}
			LogProc("glMultiDrawElements({0}, {1}, {2}, {3}, {4})", mode, count, type, indices, primcount);
		}

		/// <summary>
		/// Binding for glMultiDrawElementsBaseVertex function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="indices">
		/// A <see cref="T:System.IntPtr*"/>.
		/// </param>
		/// <param name="primcount">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="basevertex">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void MultiDrawElementsBaseVertex(int mode, Int32[] count, int type, IntPtr[] indices, Int32 primcount, int[] basevertex) {
			unsafe {
				fixed (Int32* fp_count = count)
				fixed (IntPtr* fp_indices = indices)
				fixed (int* fp_basevertex = basevertex)
				{
					if      (Delegates.pglMultiDrawElementsBaseVertex != null)
						Delegates.pglMultiDrawElementsBaseVertex(mode, fp_count, type, fp_indices, primcount, fp_basevertex);
					else
						throw new InvalidOperationException("binding point MultiDrawElementsBaseVertex cannot be found");
				}
			}
			LogProc("glMultiDrawElementsBaseVertex({0}, {1}, {2}, {3}, {4}, {5})", mode, count, type, indices, primcount, basevertex);
		}

		/// <summary>
		/// Binding for glMultiDrawElementsBaseVertex function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="indices">
		/// A <see cref="T:System.IntPtr*"/>.
		/// </param>
		/// <param name="primcount">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="basevertex">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void MultiDrawElementsBaseVertex(int mode, Int32[] count, int type, IntPtr[] indices, Int32 primcount, int* basevertex) {
			unsafe {
				fixed (Int32* fp_count = count)
				fixed (IntPtr* fp_indices = indices)
				{
					if      (Delegates.pglMultiDrawElementsBaseVertex != null)
						Delegates.pglMultiDrawElementsBaseVertex(mode, fp_count, type, fp_indices, primcount, basevertex);
					else
						throw new InvalidOperationException("binding point MultiDrawElementsBaseVertex cannot be found");
				}
			}
			LogProc("glMultiDrawElementsBaseVertex({0}, {1}, {2}, {3}, {4}, {5})", mode, count, type, indices, primcount, "basevertex");
		}
		

		/// <summary>
		/// Binding for glMultiTexCoord1d function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="s">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		/// @deprecated
		public static void MultiTexCoord1(int target, double s) {
			if      (Delegates.pglMultiTexCoord1d != null)
				Delegates.pglMultiTexCoord1d(target, s);
			else
				throw new InvalidOperationException("binding point MultiTexCoord1 cannot be found");
			LogProc("glMultiTexCoord1d({0}, {1})", target, s);
		}

		/// <summary>
		/// Binding for glMultiTexCoord1dv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		/// @deprecated
		public static void MultiTexCoord1(int target, double[] v) {
			unsafe {
				fixed (double* fp_v = v)
				{
					if      (Delegates.pglMultiTexCoord1dv != null)
						Delegates.pglMultiTexCoord1dv(target, fp_v);
					else
						throw new InvalidOperationException("binding point MultiTexCoord1 cannot be found");
				}
			}
			LogProc("glMultiTexCoord1dv({0}, {1})", target, v);
		}

		/// <summary>
		/// Binding for glMultiTexCoord1f function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="s">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		/// @deprecated
		public static void MultiTexCoord1(int target, float s) {
			if      (Delegates.pglMultiTexCoord1f != null)
				Delegates.pglMultiTexCoord1f(target, s);
			else
				throw new InvalidOperationException("binding point MultiTexCoord1 cannot be found");
			LogProc("glMultiTexCoord1f({0}, {1})", target, s);
		}

		/// <summary>
		/// Binding for glMultiTexCoord1fv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		/// @deprecated
		public static void MultiTexCoord1(int target, float[] v) {
			unsafe {
				fixed (float* fp_v = v)
				{
					if      (Delegates.pglMultiTexCoord1fv != null)
						Delegates.pglMultiTexCoord1fv(target, fp_v);
					else
						throw new InvalidOperationException("binding point MultiTexCoord1 cannot be found");
				}
			}
			LogProc("glMultiTexCoord1fv({0}, {1})", target, v);
		}

		/// <summary>
		/// Binding for glMultiTexCoord1i function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="s">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		/// @deprecated
		public static void MultiTexCoord1(int target, int s) {
			if      (Delegates.pglMultiTexCoord1i != null)
				Delegates.pglMultiTexCoord1i(target, s);
			else
				throw new InvalidOperationException("binding point MultiTexCoord1 cannot be found");
			LogProc("glMultiTexCoord1i({0}, {1})", target, s);
		}

		/// <summary>
		/// Binding for glMultiTexCoord1iv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		/// @deprecated
		public static void MultiTexCoord1(int target, int[] v) {
			unsafe {
				fixed (int* fp_v = v)
				{
					if      (Delegates.pglMultiTexCoord1iv != null)
						Delegates.pglMultiTexCoord1iv(target, fp_v);
					else
						throw new InvalidOperationException("binding point MultiTexCoord1 cannot be found");
				}
			}
			LogProc("glMultiTexCoord1iv({0}, {1})", target, v);
		}

		/// <summary>
		/// Binding for glMultiTexCoord1s function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="s">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		/// @deprecated
		public static void MultiTexCoord1(int target, Int16 s) {
			if      (Delegates.pglMultiTexCoord1s != null)
				Delegates.pglMultiTexCoord1s(target, s);
			else
				throw new InvalidOperationException("binding point MultiTexCoord1 cannot be found");
			LogProc("glMultiTexCoord1s({0}, {1})", target, s);
		}

		/// <summary>
		/// Binding for glMultiTexCoord1sv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Int16*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		/// @deprecated
		public static void MultiTexCoord1(int target, Int16[] v) {
			unsafe {
				fixed (Int16* fp_v = v)
				{
					if      (Delegates.pglMultiTexCoord1sv != null)
						Delegates.pglMultiTexCoord1sv(target, fp_v);
					else
						throw new InvalidOperationException("binding point MultiTexCoord1 cannot be found");
				}
			}
			LogProc("glMultiTexCoord1sv({0}, {1})", target, v);
		}

		/// <summary>
		/// Binding for glMultiTexCoord2d function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="s">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="t">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		/// @deprecated
		public static void MultiTexCoord2(int target, double s, double t) {
			if      (Delegates.pglMultiTexCoord2d != null)
				Delegates.pglMultiTexCoord2d(target, s, t);
			else
				throw new InvalidOperationException("binding point MultiTexCoord2 cannot be found");
			LogProc("glMultiTexCoord2d({0}, {1}, {2})", target, s, t);
		}

		/// <summary>
		/// Binding for glMultiTexCoord2dv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		/// @deprecated
		public static void MultiTexCoord2(int target, double[] v) {
			unsafe {
				fixed (double* fp_v = v)
				{
					if      (Delegates.pglMultiTexCoord2dv != null)
						Delegates.pglMultiTexCoord2dv(target, fp_v);
					else
						throw new InvalidOperationException("binding point MultiTexCoord2 cannot be found");
				}
			}
			LogProc("glMultiTexCoord2dv({0}, {1})", target, v);
		}

		/// <summary>
		/// Binding for glMultiTexCoord2f function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="s">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="t">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		/// @deprecated
		public static void MultiTexCoord2(int target, float s, float t) {
			if      (Delegates.pglMultiTexCoord2f != null)
				Delegates.pglMultiTexCoord2f(target, s, t);
			else
				throw new InvalidOperationException("binding point MultiTexCoord2 cannot be found");
			LogProc("glMultiTexCoord2f({0}, {1}, {2})", target, s, t);
		}

		/// <summary>
		/// Binding for glMultiTexCoord2fv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		/// @deprecated
		public static void MultiTexCoord2(int target, float[] v) {
			unsafe {
				fixed (float* fp_v = v)
				{
					if      (Delegates.pglMultiTexCoord2fv != null)
						Delegates.pglMultiTexCoord2fv(target, fp_v);
					else
						throw new InvalidOperationException("binding point MultiTexCoord2 cannot be found");
				}
			}
			LogProc("glMultiTexCoord2fv({0}, {1})", target, v);
		}

		/// <summary>
		/// Binding for glMultiTexCoord2i function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="s">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="t">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		/// @deprecated
		public static void MultiTexCoord2(int target, int s, int t) {
			if      (Delegates.pglMultiTexCoord2i != null)
				Delegates.pglMultiTexCoord2i(target, s, t);
			else
				throw new InvalidOperationException("binding point MultiTexCoord2 cannot be found");
			LogProc("glMultiTexCoord2i({0}, {1}, {2})", target, s, t);
		}

		/// <summary>
		/// Binding for glMultiTexCoord2iv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		/// @deprecated
		public static void MultiTexCoord2(int target, int[] v) {
			unsafe {
				fixed (int* fp_v = v)
				{
					if      (Delegates.pglMultiTexCoord2iv != null)
						Delegates.pglMultiTexCoord2iv(target, fp_v);
					else
						throw new InvalidOperationException("binding point MultiTexCoord2 cannot be found");
				}
			}
			LogProc("glMultiTexCoord2iv({0}, {1})", target, v);
		}

		/// <summary>
		/// Binding for glMultiTexCoord2s function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="s">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// <param name="t">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		/// @deprecated
		public static void MultiTexCoord2(int target, Int16 s, Int16 t) {
			if      (Delegates.pglMultiTexCoord2s != null)
				Delegates.pglMultiTexCoord2s(target, s, t);
			else
				throw new InvalidOperationException("binding point MultiTexCoord2 cannot be found");
			LogProc("glMultiTexCoord2s({0}, {1}, {2})", target, s, t);
		}

		/// <summary>
		/// Binding for glMultiTexCoord2sv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Int16*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		/// @deprecated
		public static void MultiTexCoord2(int target, Int16[] v) {
			unsafe {
				fixed (Int16* fp_v = v)
				{
					if      (Delegates.pglMultiTexCoord2sv != null)
						Delegates.pglMultiTexCoord2sv(target, fp_v);
					else
						throw new InvalidOperationException("binding point MultiTexCoord2 cannot be found");
				}
			}
			LogProc("glMultiTexCoord2sv({0}, {1})", target, v);
		}

		/// <summary>
		/// Binding for glMultiTexCoord3d function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="s">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="t">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="r">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		/// @deprecated
		public static void MultiTexCoord3(int target, double s, double t, double r) {
			if      (Delegates.pglMultiTexCoord3d != null)
				Delegates.pglMultiTexCoord3d(target, s, t, r);
			else
				throw new InvalidOperationException("binding point MultiTexCoord3 cannot be found");
			LogProc("glMultiTexCoord3d({0}, {1}, {2}, {3})", target, s, t, r);
		}

		/// <summary>
		/// Binding for glMultiTexCoord3dv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		/// @deprecated
		public static void MultiTexCoord3(int target, double[] v) {
			unsafe {
				fixed (double* fp_v = v)
				{
					if      (Delegates.pglMultiTexCoord3dv != null)
						Delegates.pglMultiTexCoord3dv(target, fp_v);
					else
						throw new InvalidOperationException("binding point MultiTexCoord3 cannot be found");
				}
			}
			LogProc("glMultiTexCoord3dv({0}, {1})", target, v);
		}

		/// <summary>
		/// Binding for glMultiTexCoord3f function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="s">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="t">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="r">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		/// @deprecated
		public static void MultiTexCoord3(int target, float s, float t, float r) {
			if      (Delegates.pglMultiTexCoord3f != null)
				Delegates.pglMultiTexCoord3f(target, s, t, r);
			else
				throw new InvalidOperationException("binding point MultiTexCoord3 cannot be found");
			LogProc("glMultiTexCoord3f({0}, {1}, {2}, {3})", target, s, t, r);
		}

		/// <summary>
		/// Binding for glMultiTexCoord3fv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		/// @deprecated
		public static void MultiTexCoord3(int target, float[] v) {
			unsafe {
				fixed (float* fp_v = v)
				{
					if      (Delegates.pglMultiTexCoord3fv != null)
						Delegates.pglMultiTexCoord3fv(target, fp_v);
					else
						throw new InvalidOperationException("binding point MultiTexCoord3 cannot be found");
				}
			}
			LogProc("glMultiTexCoord3fv({0}, {1})", target, v);
		}

		/// <summary>
		/// Binding for glMultiTexCoord3i function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="s">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="t">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="r">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		/// @deprecated
		public static void MultiTexCoord3(int target, int s, int t, int r) {
			if      (Delegates.pglMultiTexCoord3i != null)
				Delegates.pglMultiTexCoord3i(target, s, t, r);
			else
				throw new InvalidOperationException("binding point MultiTexCoord3 cannot be found");
			LogProc("glMultiTexCoord3i({0}, {1}, {2}, {3})", target, s, t, r);
		}

		/// <summary>
		/// Binding for glMultiTexCoord3iv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		/// @deprecated
		public static void MultiTexCoord3(int target, int[] v) {
			unsafe {
				fixed (int* fp_v = v)
				{
					if      (Delegates.pglMultiTexCoord3iv != null)
						Delegates.pglMultiTexCoord3iv(target, fp_v);
					else
						throw new InvalidOperationException("binding point MultiTexCoord3 cannot be found");
				}
			}
			LogProc("glMultiTexCoord3iv({0}, {1})", target, v);
		}

		/// <summary>
		/// Binding for glMultiTexCoord3s function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="s">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// <param name="t">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// <param name="r">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		/// @deprecated
		public static void MultiTexCoord3(int target, Int16 s, Int16 t, Int16 r) {
			if      (Delegates.pglMultiTexCoord3s != null)
				Delegates.pglMultiTexCoord3s(target, s, t, r);
			else
				throw new InvalidOperationException("binding point MultiTexCoord3 cannot be found");
			LogProc("glMultiTexCoord3s({0}, {1}, {2}, {3})", target, s, t, r);
		}

		/// <summary>
		/// Binding for glMultiTexCoord3sv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Int16*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		/// @deprecated
		public static void MultiTexCoord3(int target, Int16[] v) {
			unsafe {
				fixed (Int16* fp_v = v)
				{
					if      (Delegates.pglMultiTexCoord3sv != null)
						Delegates.pglMultiTexCoord3sv(target, fp_v);
					else
						throw new InvalidOperationException("binding point MultiTexCoord3 cannot be found");
				}
			}
			LogProc("glMultiTexCoord3sv({0}, {1})", target, v);
		}

		/// <summary>
		/// Binding for glMultiTexCoord4d function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="s">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="t">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="r">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="q">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		/// @deprecated
		public static void MultiTexCoord4(int target, double s, double t, double r, double q) {
			if      (Delegates.pglMultiTexCoord4d != null)
				Delegates.pglMultiTexCoord4d(target, s, t, r, q);
			else
				throw new InvalidOperationException("binding point MultiTexCoord4 cannot be found");
			LogProc("glMultiTexCoord4d({0}, {1}, {2}, {3}, {4})", target, s, t, r, q);
		}

		/// <summary>
		/// Binding for glMultiTexCoord4dv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		/// @deprecated
		public static void MultiTexCoord4(int target, double[] v) {
			unsafe {
				fixed (double* fp_v = v)
				{
					if      (Delegates.pglMultiTexCoord4dv != null)
						Delegates.pglMultiTexCoord4dv(target, fp_v);
					else
						throw new InvalidOperationException("binding point MultiTexCoord4 cannot be found");
				}
			}
			LogProc("glMultiTexCoord4dv({0}, {1})", target, v);
		}

		/// <summary>
		/// Binding for glMultiTexCoord4f function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="s">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="t">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="r">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="q">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		/// @deprecated
		public static void MultiTexCoord4(int target, float s, float t, float r, float q) {
			if      (Delegates.pglMultiTexCoord4f != null)
				Delegates.pglMultiTexCoord4f(target, s, t, r, q);
			else
				throw new InvalidOperationException("binding point MultiTexCoord4 cannot be found");
			LogProc("glMultiTexCoord4f({0}, {1}, {2}, {3}, {4})", target, s, t, r, q);
		}

		/// <summary>
		/// Binding for glMultiTexCoord4fv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		/// @deprecated
		public static void MultiTexCoord4(int target, float[] v) {
			unsafe {
				fixed (float* fp_v = v)
				{
					if      (Delegates.pglMultiTexCoord4fv != null)
						Delegates.pglMultiTexCoord4fv(target, fp_v);
					else
						throw new InvalidOperationException("binding point MultiTexCoord4 cannot be found");
				}
			}
			LogProc("glMultiTexCoord4fv({0}, {1})", target, v);
		}

		/// <summary>
		/// Binding for glMultiTexCoord4i function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="s">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="t">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="r">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="q">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		/// @deprecated
		public static void MultiTexCoord4(int target, int s, int t, int r, int q) {
			if      (Delegates.pglMultiTexCoord4i != null)
				Delegates.pglMultiTexCoord4i(target, s, t, r, q);
			else
				throw new InvalidOperationException("binding point MultiTexCoord4 cannot be found");
			LogProc("glMultiTexCoord4i({0}, {1}, {2}, {3}, {4})", target, s, t, r, q);
		}

		/// <summary>
		/// Binding for glMultiTexCoord4iv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		/// @deprecated
		public static void MultiTexCoord4(int target, int[] v) {
			unsafe {
				fixed (int* fp_v = v)
				{
					if      (Delegates.pglMultiTexCoord4iv != null)
						Delegates.pglMultiTexCoord4iv(target, fp_v);
					else
						throw new InvalidOperationException("binding point MultiTexCoord4 cannot be found");
				}
			}
			LogProc("glMultiTexCoord4iv({0}, {1})", target, v);
		}

		/// <summary>
		/// Binding for glMultiTexCoord4s function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="s">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// <param name="t">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// <param name="r">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// <param name="q">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		/// @deprecated
		public static void MultiTexCoord4(int target, Int16 s, Int16 t, Int16 r, Int16 q) {
			if      (Delegates.pglMultiTexCoord4s != null)
				Delegates.pglMultiTexCoord4s(target, s, t, r, q);
			else
				throw new InvalidOperationException("binding point MultiTexCoord4 cannot be found");
			LogProc("glMultiTexCoord4s({0}, {1}, {2}, {3}, {4})", target, s, t, r, q);
		}

		/// <summary>
		/// Binding for glMultiTexCoord4sv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Int16*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		/// @deprecated
		public static void MultiTexCoord4(int target, Int16[] v) {
			unsafe {
				fixed (Int16* fp_v = v)
				{
					if      (Delegates.pglMultiTexCoord4sv != null)
						Delegates.pglMultiTexCoord4sv(target, fp_v);
					else
						throw new InvalidOperationException("binding point MultiTexCoord4 cannot be found");
				}
			}
			LogProc("glMultiTexCoord4sv({0}, {1})", target, v);
		}

		/// <summary>
		/// Binding for glMultiTexCoordP1ui function.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="coords">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void MultiTexCoordP1(int texture, int type, UInt32 coords) {
			if      (Delegates.pglMultiTexCoordP1ui != null)
				Delegates.pglMultiTexCoordP1ui(texture, type, coords);
			else
				throw new InvalidOperationException("binding point MultiTexCoordP1 cannot be found");
			LogProc("glMultiTexCoordP1ui({0}, {1}, {2})", texture, type, coords);
		}

		/// <summary>
		/// Binding for glMultiTexCoordP1uiv function.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="coords">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void MultiTexCoordP1(int texture, int type, UInt32[] coords) {
			unsafe {
				fixed (UInt32* fp_coords = coords)
				{
					if      (Delegates.pglMultiTexCoordP1uiv != null)
						Delegates.pglMultiTexCoordP1uiv(texture, type, fp_coords);
					else
						throw new InvalidOperationException("binding point MultiTexCoordP1 cannot be found");
				}
			}
			LogProc("glMultiTexCoordP1uiv({0}, {1}, {2})", texture, type, coords);
		}

		/// <summary>
		/// Binding for glMultiTexCoordP1uiv function.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="coords">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void MultiTexCoordP1(int texture, int type, UInt32* coords) {
			unsafe {
				if      (Delegates.pglMultiTexCoordP1uiv != null)
					Delegates.pglMultiTexCoordP1uiv(texture, type, coords);
				else
					throw new InvalidOperationException("binding point MultiTexCoordP1 cannot be found");
			}
			LogProc("glMultiTexCoordP1uiv({0}, {1}, {2})", texture, type, "coords");
		}
		

		/// <summary>
		/// Binding for glMultiTexCoordP2ui function.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="coords">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void MultiTexCoordP2(int texture, int type, UInt32 coords) {
			if      (Delegates.pglMultiTexCoordP2ui != null)
				Delegates.pglMultiTexCoordP2ui(texture, type, coords);
			else
				throw new InvalidOperationException("binding point MultiTexCoordP2 cannot be found");
			LogProc("glMultiTexCoordP2ui({0}, {1}, {2})", texture, type, coords);
		}

		/// <summary>
		/// Binding for glMultiTexCoordP2uiv function.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="coords">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void MultiTexCoordP2(int texture, int type, UInt32[] coords) {
			unsafe {
				fixed (UInt32* fp_coords = coords)
				{
					if      (Delegates.pglMultiTexCoordP2uiv != null)
						Delegates.pglMultiTexCoordP2uiv(texture, type, fp_coords);
					else
						throw new InvalidOperationException("binding point MultiTexCoordP2 cannot be found");
				}
			}
			LogProc("glMultiTexCoordP2uiv({0}, {1}, {2})", texture, type, coords);
		}

		/// <summary>
		/// Binding for glMultiTexCoordP2uiv function.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="coords">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void MultiTexCoordP2(int texture, int type, UInt32* coords) {
			unsafe {
				if      (Delegates.pglMultiTexCoordP2uiv != null)
					Delegates.pglMultiTexCoordP2uiv(texture, type, coords);
				else
					throw new InvalidOperationException("binding point MultiTexCoordP2 cannot be found");
			}
			LogProc("glMultiTexCoordP2uiv({0}, {1}, {2})", texture, type, "coords");
		}
		

		/// <summary>
		/// Binding for glMultiTexCoordP3ui function.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="coords">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void MultiTexCoordP3(int texture, int type, UInt32 coords) {
			if      (Delegates.pglMultiTexCoordP3ui != null)
				Delegates.pglMultiTexCoordP3ui(texture, type, coords);
			else
				throw new InvalidOperationException("binding point MultiTexCoordP3 cannot be found");
			LogProc("glMultiTexCoordP3ui({0}, {1}, {2})", texture, type, coords);
		}

		/// <summary>
		/// Binding for glMultiTexCoordP3uiv function.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="coords">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void MultiTexCoordP3(int texture, int type, UInt32[] coords) {
			unsafe {
				fixed (UInt32* fp_coords = coords)
				{
					if      (Delegates.pglMultiTexCoordP3uiv != null)
						Delegates.pglMultiTexCoordP3uiv(texture, type, fp_coords);
					else
						throw new InvalidOperationException("binding point MultiTexCoordP3 cannot be found");
				}
			}
			LogProc("glMultiTexCoordP3uiv({0}, {1}, {2})", texture, type, coords);
		}

		/// <summary>
		/// Binding for glMultiTexCoordP3uiv function.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="coords">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void MultiTexCoordP3(int texture, int type, UInt32* coords) {
			unsafe {
				if      (Delegates.pglMultiTexCoordP3uiv != null)
					Delegates.pglMultiTexCoordP3uiv(texture, type, coords);
				else
					throw new InvalidOperationException("binding point MultiTexCoordP3 cannot be found");
			}
			LogProc("glMultiTexCoordP3uiv({0}, {1}, {2})", texture, type, "coords");
		}
		

		/// <summary>
		/// Binding for glMultiTexCoordP4ui function.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="coords">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void MultiTexCoordP4(int texture, int type, UInt32 coords) {
			if      (Delegates.pglMultiTexCoordP4ui != null)
				Delegates.pglMultiTexCoordP4ui(texture, type, coords);
			else
				throw new InvalidOperationException("binding point MultiTexCoordP4 cannot be found");
			LogProc("glMultiTexCoordP4ui({0}, {1}, {2})", texture, type, coords);
		}

		/// <summary>
		/// Binding for glMultiTexCoordP4uiv function.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="coords">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void MultiTexCoordP4(int texture, int type, UInt32[] coords) {
			unsafe {
				fixed (UInt32* fp_coords = coords)
				{
					if      (Delegates.pglMultiTexCoordP4uiv != null)
						Delegates.pglMultiTexCoordP4uiv(texture, type, fp_coords);
					else
						throw new InvalidOperationException("binding point MultiTexCoordP4 cannot be found");
				}
			}
			LogProc("glMultiTexCoordP4uiv({0}, {1}, {2})", texture, type, coords);
		}

		/// <summary>
		/// Binding for glMultiTexCoordP4uiv function.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="coords">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void MultiTexCoordP4(int texture, int type, UInt32* coords) {
			unsafe {
				if      (Delegates.pglMultiTexCoordP4uiv != null)
					Delegates.pglMultiTexCoordP4uiv(texture, type, coords);
				else
					throw new InvalidOperationException("binding point MultiTexCoordP4 cannot be found");
			}
			LogProc("glMultiTexCoordP4uiv({0}, {1}, {2})", texture, type, "coords");
		}
		

		/// <summary>
		/// Binding for glMultMatrixd function.
		/// </summary>
		/// <param name="m">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void MultMatrix(double[] m) {
			unsafe {
				fixed (double* fp_m = m)
				{
					if      (Delegates.pglMultMatrixd != null)
						Delegates.pglMultMatrixd(fp_m);
					else
						throw new InvalidOperationException("binding point MultMatrix cannot be found");
				}
			}
			LogProc("glMultMatrixd({0})", m);
		}

		/// <summary>
		/// Binding for glMultMatrixd function.
		/// </summary>
		/// <param name="m">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void MultMatrix(double* m) {
			unsafe {
				if      (Delegates.pglMultMatrixd != null)
					Delegates.pglMultMatrixd(m);
				else
					throw new InvalidOperationException("binding point MultMatrix cannot be found");
			}
			LogProc("glMultMatrixd({0})", "m");
		}
		

		/// <summary>
		/// Binding for glMultMatrixf function.
		/// </summary>
		/// <param name="m">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void MultMatrix(float[] m) {
			unsafe {
				fixed (float* fp_m = m)
				{
					if      (Delegates.pglMultMatrixf != null)
						Delegates.pglMultMatrixf(fp_m);
					else
						throw new InvalidOperationException("binding point MultMatrix cannot be found");
				}
			}
			LogProc("glMultMatrixf({0})", m);
		}

		/// <summary>
		/// Binding for glMultMatrixf function.
		/// </summary>
		/// <param name="m">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void MultMatrix(float* m) {
			unsafe {
				if      (Delegates.pglMultMatrixf != null)
					Delegates.pglMultMatrixf(m);
				else
					throw new InvalidOperationException("binding point MultMatrix cannot be found");
			}
			LogProc("glMultMatrixf({0})", "m");
		}
		

		/// <summary>
		/// Binding for glMultTransposeMatrixd function.
		/// </summary>
		/// <param name="m">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		/// @deprecated
		public static void MultTransposeMatrix(double[] m) {
			unsafe {
				fixed (double* fp_m = m)
				{
					if      (Delegates.pglMultTransposeMatrixd != null)
						Delegates.pglMultTransposeMatrixd(fp_m);
					else
						throw new InvalidOperationException("binding point MultTransposeMatrix cannot be found");
				}
			}
			LogProc("glMultTransposeMatrixd({0})", m);
		}

		/// <summary>
		/// Binding for glMultTransposeMatrixd function.
		/// </summary>
		/// <param name="m">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		/// @deprecated
		public static void MultTransposeMatrix(double* m) {
			unsafe {
				if      (Delegates.pglMultTransposeMatrixd != null)
					Delegates.pglMultTransposeMatrixd(m);
				else
					throw new InvalidOperationException("binding point MultTransposeMatrix cannot be found");
			}
			LogProc("glMultTransposeMatrixd({0})", "m");
		}
		

		/// <summary>
		/// Binding for glMultTransposeMatrixf function.
		/// </summary>
		/// <param name="m">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		/// @deprecated
		public static void MultTransposeMatrix(float[] m) {
			unsafe {
				fixed (float* fp_m = m)
				{
					if      (Delegates.pglMultTransposeMatrixf != null)
						Delegates.pglMultTransposeMatrixf(fp_m);
					else
						throw new InvalidOperationException("binding point MultTransposeMatrix cannot be found");
				}
			}
			LogProc("glMultTransposeMatrixf({0})", m);
		}

		/// <summary>
		/// Binding for glMultTransposeMatrixf function.
		/// </summary>
		/// <param name="m">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		/// @deprecated
		public static void MultTransposeMatrix(float* m) {
			unsafe {
				if      (Delegates.pglMultTransposeMatrixf != null)
					Delegates.pglMultTransposeMatrixf(m);
				else
					throw new InvalidOperationException("binding point MultTransposeMatrix cannot be found");
			}
			LogProc("glMultTransposeMatrixf({0})", "m");
		}
		

		/// <summary>
		/// Binding for glNewList function.
		/// </summary>
		/// <param name="list">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void NewList(UInt32 list, int mode) {
			if      (Delegates.pglNewList != null)
				Delegates.pglNewList(list, mode);
			else
				throw new InvalidOperationException("binding point NewList cannot be found");
			LogProc("glNewList({0}, {1})", list, mode);
		}

		/// <summary>
		/// Binding for glNormal3b function.
		/// </summary>
		/// <param name="nx">
		/// A <see cref="T:System.SByte"/>.
		/// </param>
		/// <param name="ny">
		/// A <see cref="T:System.SByte"/>.
		/// </param>
		/// <param name="nz">
		/// A <see cref="T:System.SByte"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Normal3(sbyte nx, sbyte ny, sbyte nz) {
			if      (Delegates.pglNormal3b != null)
				Delegates.pglNormal3b(nx, ny, nz);
			else
				throw new InvalidOperationException("binding point Normal3 cannot be found");
			LogProc("glNormal3b({0}, {1}, {2})", nx, ny, nz);
		}

		/// <summary>
		/// Binding for glNormal3bv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.SByte*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Normal3(sbyte[] v) {
			unsafe {
				fixed (sbyte* fp_v = v)
				{
					if      (Delegates.pglNormal3bv != null)
						Delegates.pglNormal3bv(fp_v);
					else
						throw new InvalidOperationException("binding point Normal3 cannot be found");
				}
			}
			LogProc("glNormal3bv({0})", v);
		}

		/// <summary>
		/// Binding for glNormal3d function.
		/// </summary>
		/// <param name="nx">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="ny">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="nz">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Normal3(double nx, double ny, double nz) {
			if      (Delegates.pglNormal3d != null)
				Delegates.pglNormal3d(nx, ny, nz);
			else
				throw new InvalidOperationException("binding point Normal3 cannot be found");
			LogProc("glNormal3d({0}, {1}, {2})", nx, ny, nz);
		}

		/// <summary>
		/// Binding for glNormal3dv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Normal3(double[] v) {
			unsafe {
				fixed (double* fp_v = v)
				{
					if      (Delegates.pglNormal3dv != null)
						Delegates.pglNormal3dv(fp_v);
					else
						throw new InvalidOperationException("binding point Normal3 cannot be found");
				}
			}
			LogProc("glNormal3dv({0})", v);
		}

		/// <summary>
		/// Binding for glNormal3f function.
		/// </summary>
		/// <param name="nx">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="ny">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="nz">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Normal3(float nx, float ny, float nz) {
			if      (Delegates.pglNormal3f != null)
				Delegates.pglNormal3f(nx, ny, nz);
			else
				throw new InvalidOperationException("binding point Normal3 cannot be found");
			LogProc("glNormal3f({0}, {1}, {2})", nx, ny, nz);
		}

		/// <summary>
		/// Binding for glNormal3fv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Normal3(float[] v) {
			unsafe {
				fixed (float* fp_v = v)
				{
					if      (Delegates.pglNormal3fv != null)
						Delegates.pglNormal3fv(fp_v);
					else
						throw new InvalidOperationException("binding point Normal3 cannot be found");
				}
			}
			LogProc("glNormal3fv({0})", v);
		}

		/// <summary>
		/// Binding for glNormal3i function.
		/// </summary>
		/// <param name="nx">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="ny">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="nz">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Normal3(int nx, int ny, int nz) {
			if      (Delegates.pglNormal3i != null)
				Delegates.pglNormal3i(nx, ny, nz);
			else
				throw new InvalidOperationException("binding point Normal3 cannot be found");
			LogProc("glNormal3i({0}, {1}, {2})", nx, ny, nz);
		}

		/// <summary>
		/// Binding for glNormal3iv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Normal3(int[] v) {
			unsafe {
				fixed (int* fp_v = v)
				{
					if      (Delegates.pglNormal3iv != null)
						Delegates.pglNormal3iv(fp_v);
					else
						throw new InvalidOperationException("binding point Normal3 cannot be found");
				}
			}
			LogProc("glNormal3iv({0})", v);
		}

		/// <summary>
		/// Binding for glNormal3iv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Normal3(int* v) {
			unsafe {
				if      (Delegates.pglNormal3iv != null)
					Delegates.pglNormal3iv(v);
				else
					throw new InvalidOperationException("binding point Normal3 cannot be found");
			}
			LogProc("glNormal3iv({0})", "v");
		}
		

		/// <summary>
		/// Binding for glNormal3s function.
		/// </summary>
		/// <param name="nx">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// <param name="ny">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// <param name="nz">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Normal3(Int16 nx, Int16 ny, Int16 nz) {
			if      (Delegates.pglNormal3s != null)
				Delegates.pglNormal3s(nx, ny, nz);
			else
				throw new InvalidOperationException("binding point Normal3 cannot be found");
			LogProc("glNormal3s({0}, {1}, {2})", nx, ny, nz);
		}

		/// <summary>
		/// Binding for glNormal3sv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Int16*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Normal3(Int16[] v) {
			unsafe {
				fixed (Int16* fp_v = v)
				{
					if      (Delegates.pglNormal3sv != null)
						Delegates.pglNormal3sv(fp_v);
					else
						throw new InvalidOperationException("binding point Normal3 cannot be found");
				}
			}
			LogProc("glNormal3sv({0})", v);
		}

		/// <summary>
		/// Binding for glNormalP3ui function.
		/// </summary>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="coords">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void NormalP3(int type, UInt32 coords) {
			if      (Delegates.pglNormalP3ui != null)
				Delegates.pglNormalP3ui(type, coords);
			else
				throw new InvalidOperationException("binding point NormalP3 cannot be found");
			LogProc("glNormalP3ui({0}, {1})", type, coords);
		}

		/// <summary>
		/// Binding for glNormalP3uiv function.
		/// </summary>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="coords">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void NormalP3(int type, UInt32[] coords) {
			unsafe {
				fixed (UInt32* fp_coords = coords)
				{
					if      (Delegates.pglNormalP3uiv != null)
						Delegates.pglNormalP3uiv(type, fp_coords);
					else
						throw new InvalidOperationException("binding point NormalP3 cannot be found");
				}
			}
			LogProc("glNormalP3uiv({0}, {1})", type, coords);
		}

		/// <summary>
		/// Binding for glNormalP3uiv function.
		/// </summary>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="coords">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void NormalP3(int type, UInt32* coords) {
			unsafe {
				if      (Delegates.pglNormalP3uiv != null)
					Delegates.pglNormalP3uiv(type, coords);
				else
					throw new InvalidOperationException("binding point NormalP3 cannot be found");
			}
			LogProc("glNormalP3uiv({0}, {1})", type, "coords");
		}
		

		/// <summary>
		/// Binding for glNormalPointer function.
		/// </summary>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="stride">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pointer">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		/// @deprecated
		public static void NormalPointer(int type, Int32 stride, object pointer) {
			GCHandle pp_pointer = GCHandle.Alloc(pointer, GCHandleType.Pinned);
			try {
				if      (Delegates.pglNormalPointer != null)
					Delegates.pglNormalPointer(type, stride, pp_pointer.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point NormalPointer cannot be found");
			} finally {
				pp_pointer.Free();
			}
			LogProc("glNormalPointer({0}, {1}, {2})", type, stride, pointer);
		}

		/// <summary>
		/// Binding for glOrtho function.
		/// </summary>
		/// <param name="left">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="right">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="bottom">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="top">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="zNear">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="zFar">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Ortho(double left, double right, double bottom, double top, double zNear, double zFar) {
			if      (Delegates.pglOrtho != null)
				Delegates.pglOrtho(left, right, bottom, top, zNear, zFar);
			else
				throw new InvalidOperationException("binding point Ortho cannot be found");
			LogProc("glOrtho({0}, {1}, {2}, {3}, {4}, {5})", left, right, bottom, top, zNear, zFar);
		}

		/// <summary>
		/// Binding for glPassThrough function.
		/// </summary>
		/// <param name="token">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void PassThrough(float token) {
			if      (Delegates.pglPassThrough != null)
				Delegates.pglPassThrough(token);
			else
				throw new InvalidOperationException("binding point PassThrough cannot be found");
			LogProc("glPassThrough({0})", token);
		}

		/// <summary>
		/// Binding for glPatchParameterfv function.
		/// </summary>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="values">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void PatchParameter(int pname, float[] values) {
			unsafe {
				fixed (float* fp_values = values)
				{
					if      (Delegates.pglPatchParameterfv != null)
						Delegates.pglPatchParameterfv(pname, fp_values);
					else
						throw new InvalidOperationException("binding point PatchParameter cannot be found");
				}
			}
			LogProc("glPatchParameterfv({0}, {1})", pname, values);
		}

		/// <summary>
		/// Binding for glPatchParameterfv function.
		/// </summary>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="values">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void PatchParameter(int pname, float* values) {
			unsafe {
				if      (Delegates.pglPatchParameterfv != null)
					Delegates.pglPatchParameterfv(pname, values);
				else
					throw new InvalidOperationException("binding point PatchParameter cannot be found");
			}
			LogProc("glPatchParameterfv({0}, {1})", pname, "values");
		}
		

		/// <summary>
		/// Binding for glPatchParameteri function.
		/// </summary>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void PatchParameter(int pname, int value) {
			if      (Delegates.pglPatchParameteri != null)
				Delegates.pglPatchParameteri(pname, value);
			else
				throw new InvalidOperationException("binding point PatchParameter cannot be found");
			LogProc("glPatchParameteri({0}, {1})", pname, value);
		}

		/// <summary>
		/// Binding for glPauseTransformFeedback function.
		/// </summary>
		/// @note This routine is available from OpenGL 1.2
		public static void PauseTransformFeedback() {
			if      (Delegates.pglPauseTransformFeedback != null)
				Delegates.pglPauseTransformFeedback();
			else
				throw new InvalidOperationException("binding point PauseTransformFeedback cannot be found");
			LogProc("glPauseTransformFeedback()");
		}

		/// <summary>
		/// Binding for glPixelMapfv function.
		/// </summary>
		/// <param name="map">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="mapsize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="values">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void PixelMap(int map, int mapsize, float[] values) {
			unsafe {
				fixed (float* fp_values = values)
				{
					if      (Delegates.pglPixelMapfv != null)
						Delegates.pglPixelMapfv(map, mapsize, fp_values);
					else
						throw new InvalidOperationException("binding point PixelMap cannot be found");
				}
			}
			LogProc("glPixelMapfv({0}, {1}, {2})", map, mapsize, values);
		}

		/// <summary>
		/// Binding for glPixelMapfv function.
		/// </summary>
		/// <param name="map">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="mapsize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="values">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void PixelMap(int map, int mapsize, float* values) {
			unsafe {
				if      (Delegates.pglPixelMapfv != null)
					Delegates.pglPixelMapfv(map, mapsize, values);
				else
					throw new InvalidOperationException("binding point PixelMap cannot be found");
			}
			LogProc("glPixelMapfv({0}, {1}, {2})", map, mapsize, "values");
		}
		

		/// <summary>
		/// Binding for glPixelMapuiv function.
		/// </summary>
		/// <param name="map">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="mapsize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="values">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void PixelMap(int map, int mapsize, UInt32[] values) {
			unsafe {
				fixed (UInt32* fp_values = values)
				{
					if      (Delegates.pglPixelMapuiv != null)
						Delegates.pglPixelMapuiv(map, mapsize, fp_values);
					else
						throw new InvalidOperationException("binding point PixelMap cannot be found");
				}
			}
			LogProc("glPixelMapuiv({0}, {1}, {2})", map, mapsize, values);
		}

		/// <summary>
		/// Binding for glPixelMapuiv function.
		/// </summary>
		/// <param name="map">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="mapsize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="values">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void PixelMap(int map, int mapsize, UInt32* values) {
			unsafe {
				if      (Delegates.pglPixelMapuiv != null)
					Delegates.pglPixelMapuiv(map, mapsize, values);
				else
					throw new InvalidOperationException("binding point PixelMap cannot be found");
			}
			LogProc("glPixelMapuiv({0}, {1}, {2})", map, mapsize, "values");
		}
		

		/// <summary>
		/// Binding for glPixelMapusv function.
		/// </summary>
		/// <param name="map">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="mapsize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="values">
		/// A <see cref="T:System.UInt16*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void PixelMap(int map, int mapsize, UInt16[] values) {
			unsafe {
				fixed (UInt16* fp_values = values)
				{
					if      (Delegates.pglPixelMapusv != null)
						Delegates.pglPixelMapusv(map, mapsize, fp_values);
					else
						throw new InvalidOperationException("binding point PixelMap cannot be found");
				}
			}
			LogProc("glPixelMapusv({0}, {1}, {2})", map, mapsize, values);
		}

		/// <summary>
		/// Binding for glPixelStoref function.
		/// </summary>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="param">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void PixelStore(int pname, float param) {
			if      (Delegates.pglPixelStoref != null)
				Delegates.pglPixelStoref(pname, param);
			else
				throw new InvalidOperationException("binding point PixelStore cannot be found");
			LogProc("glPixelStoref({0}, {1})", pname, param);
		}

		/// <summary>
		/// Binding for glPixelStorei function.
		/// </summary>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="param">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void PixelStore(int pname, int param) {
			if      (Delegates.pglPixelStorei != null)
				Delegates.pglPixelStorei(pname, param);
			else
				throw new InvalidOperationException("binding point PixelStore cannot be found");
			LogProc("glPixelStorei({0}, {1})", pname, param);
		}

		/// <summary>
		/// Binding for glPixelTransferf function.
		/// </summary>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="param">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void PixelTransfer(int pname, float param) {
			if      (Delegates.pglPixelTransferf != null)
				Delegates.pglPixelTransferf(pname, param);
			else
				throw new InvalidOperationException("binding point PixelTransfer cannot be found");
			LogProc("glPixelTransferf({0}, {1})", pname, param);
		}

		/// <summary>
		/// Binding for glPixelTransferi function.
		/// </summary>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="param">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void PixelTransfer(int pname, int param) {
			if      (Delegates.pglPixelTransferi != null)
				Delegates.pglPixelTransferi(pname, param);
			else
				throw new InvalidOperationException("binding point PixelTransfer cannot be found");
			LogProc("glPixelTransferi({0}, {1})", pname, param);
		}

		/// <summary>
		/// Binding for glPixelZoom function.
		/// </summary>
		/// <param name="xfactor">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="yfactor">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void PixelZoom(float xfactor, float yfactor) {
			if      (Delegates.pglPixelZoom != null)
				Delegates.pglPixelZoom(xfactor, yfactor);
			else
				throw new InvalidOperationException("binding point PixelZoom cannot be found");
			LogProc("glPixelZoom({0}, {1})", xfactor, yfactor);
		}

		/// <summary>
		/// Binding for glPointParameterf function.
		/// </summary>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="param">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.4
		public static void PointParameter(int pname, float param) {
			if      (Delegates.pglPointParameterf != null)
				Delegates.pglPointParameterf(pname, param);
			else
				throw new InvalidOperationException("binding point PointParameter cannot be found");
			LogProc("glPointParameterf({0}, {1})", pname, param);
		}

		/// <summary>
		/// Binding for glPointParameterfv function.
		/// </summary>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.4
		public static void PointParameter(int pname, float[] @params) {
			unsafe {
				fixed (float* fp_params = @params)
				{
					if      (Delegates.pglPointParameterfv != null)
						Delegates.pglPointParameterfv(pname, fp_params);
					else
						throw new InvalidOperationException("binding point PointParameter cannot be found");
				}
			}
			LogProc("glPointParameterfv({0}, {1})", pname, @params);
		}

		/// <summary>
		/// Binding for glPointParameteri function.
		/// </summary>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="param">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.4
		public static void PointParameter(int pname, int param) {
			if      (Delegates.pglPointParameteri != null)
				Delegates.pglPointParameteri(pname, param);
			else
				throw new InvalidOperationException("binding point PointParameter cannot be found");
			LogProc("glPointParameteri({0}, {1})", pname, param);
		}

		/// <summary>
		/// Binding for glPointParameteriv function.
		/// </summary>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.4
		public static void PointParameter(int pname, int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglPointParameteriv != null)
						Delegates.pglPointParameteriv(pname, fp_params);
					else
						throw new InvalidOperationException("binding point PointParameter cannot be found");
				}
			}
			LogProc("glPointParameteriv({0}, {1})", pname, @params);
		}

		/// <summary>
		/// Binding for glPointParameteriv function.
		/// </summary>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.4
		public static void PointParameter(int pname, int* @params) {
			unsafe {
				if      (Delegates.pglPointParameteriv != null)
					Delegates.pglPointParameteriv(pname, @params);
				else
					throw new InvalidOperationException("binding point PointParameter cannot be found");
			}
			LogProc("glPointParameteriv({0}, {1})", pname, "@params");
		}
		

		/// <summary>
		/// Binding for glPointSize function.
		/// </summary>
		/// <param name="size">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void PointSize(float size) {
			if      (Delegates.pglPointSize != null)
				Delegates.pglPointSize(size);
			else
				throw new InvalidOperationException("binding point PointSize cannot be found");
			LogProc("glPointSize({0})", size);
		}

		/// <summary>
		/// Binding for glPolygonMode function.
		/// </summary>
		/// <param name="face">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void PolygonMode(int face, int mode) {
			if      (Delegates.pglPolygonMode != null)
				Delegates.pglPolygonMode(face, mode);
			else
				throw new InvalidOperationException("binding point PolygonMode cannot be found");
			LogProc("glPolygonMode({0}, {1})", face, mode);
		}

		/// <summary>
		/// Binding for glPolygonOffset function.
		/// </summary>
		/// <param name="factor">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="units">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void PolygonOffset(float factor, float units) {
			if      (Delegates.pglPolygonOffset != null)
				Delegates.pglPolygonOffset(factor, units);
			else
				throw new InvalidOperationException("binding point PolygonOffset cannot be found");
			LogProc("glPolygonOffset({0}, {1})", factor, units);
		}

		/// <summary>
		/// Binding for glPolygonStipple function.
		/// </summary>
		/// <param name="mask">
		/// A <see cref="T:System.Byte*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void PolygonStipple(byte[] mask) {
			unsafe {
				fixed (byte* fp_mask = mask)
				{
					if      (Delegates.pglPolygonStipple != null)
						Delegates.pglPolygonStipple(fp_mask);
					else
						throw new InvalidOperationException("binding point PolygonStipple cannot be found");
				}
			}
			LogProc("glPolygonStipple({0})", mask);
		}

		/// <summary>
		/// Binding for glPopAttrib function.
		/// </summary>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void PopAttrib() {
			if      (Delegates.pglPopAttrib != null)
				Delegates.pglPopAttrib();
			else
				throw new InvalidOperationException("binding point PopAttrib cannot be found");
			LogProc("glPopAttrib()");
		}

		/// <summary>
		/// Binding for glPopClientAttrib function.
		/// </summary>
		/// @note This routine is available from OpenGL 1.1
		/// @deprecated
		public static void PopClientAttrib() {
			if      (Delegates.pglPopClientAttrib != null)
				Delegates.pglPopClientAttrib();
			else
				throw new InvalidOperationException("binding point PopClientAttrib cannot be found");
			LogProc("glPopClientAttrib()");
		}

		/// <summary>
		/// Binding for glPopMatrix function.
		/// </summary>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void PopMatrix() {
			if      (Delegates.pglPopMatrix != null)
				Delegates.pglPopMatrix();
			else
				throw new InvalidOperationException("binding point PopMatrix cannot be found");
			LogProc("glPopMatrix()");
		}

		/// <summary>
		/// Binding for glPopName function.
		/// </summary>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void PopName() {
			if      (Delegates.pglPopName != null)
				Delegates.pglPopName();
			else
				throw new InvalidOperationException("binding point PopName cannot be found");
			LogProc("glPopName()");
		}

		/// <summary>
		/// Binding for glPrimitiveRestartIndex function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.1
		public static void PrimitiveRestartIndex(UInt32 index) {
			if      (Delegates.pglPrimitiveRestartIndex != null)
				Delegates.pglPrimitiveRestartIndex(index);
			else
				throw new InvalidOperationException("binding point PrimitiveRestartIndex cannot be found");
			LogProc("glPrimitiveRestartIndex({0})", index);
		}

		/// <summary>
		/// Binding for glPrioritizeTextures function.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="textures">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// <param name="priorities">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		/// @deprecated
		public static void PrioritizeTextures(Int32 n, UInt32[] textures, float[] priorities) {
			unsafe {
				fixed (UInt32* fp_textures = textures)
				fixed (float* fp_priorities = priorities)
				{
					if      (Delegates.pglPrioritizeTextures != null)
						Delegates.pglPrioritizeTextures(n, fp_textures, fp_priorities);
					else
						throw new InvalidOperationException("binding point PrioritizeTextures cannot be found");
				}
			}
			LogProc("glPrioritizeTextures({0}, {1}, {2})", n, textures, priorities);
		}

		/// <summary>
		/// Binding for glProgramBinary function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="binaryFormat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="binary">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// <param name="length">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramBinary(UInt32 program, int binaryFormat, object binary, Int32 length) {
			GCHandle pp_binary = GCHandle.Alloc(binary, GCHandleType.Pinned);
			try {
				if      (Delegates.pglProgramBinary != null)
					Delegates.pglProgramBinary(program, binaryFormat, pp_binary.AddrOfPinnedObject(), length);
				else
					throw new InvalidOperationException("binding point ProgramBinary cannot be found");
			} finally {
				pp_binary.Free();
			}
			LogProc("glProgramBinary({0}, {1}, {2}, {3})", program, binaryFormat, binary, length);
		}

		/// <summary>
		/// Binding for glProgramParameteri function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void ProgramParameter(UInt32 program, int pname, int value) {
			if      (Delegates.pglProgramParameteri != null)
				Delegates.pglProgramParameteri(program, pname, value);
			else
				throw new InvalidOperationException("binding point ProgramParameter cannot be found");
			LogProc("glProgramParameteri({0}, {1}, {2})", program, pname, value);
		}

		/// <summary>
		/// Binding for glProgramUniform1d function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v0">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniform1(UInt32 program, int location, double v0) {
			if      (Delegates.pglProgramUniform1d != null)
				Delegates.pglProgramUniform1d(program, location, v0);
			else
				throw new InvalidOperationException("binding point ProgramUniform1 cannot be found");
			LogProc("glProgramUniform1d({0}, {1}, {2})", program, location, v0);
		}

		/// <summary>
		/// Binding for glProgramUniform1dv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniform1(UInt32 program, int location, Int32 count, double[] value) {
			unsafe {
				fixed (double* fp_value = value)
				{
					if      (Delegates.pglProgramUniform1dv != null)
						Delegates.pglProgramUniform1dv(program, location, count, fp_value);
					else
						throw new InvalidOperationException("binding point ProgramUniform1 cannot be found");
				}
			}
			LogProc("glProgramUniform1dv({0}, {1}, {2}, {3})", program, location, count, value);
		}

		/// <summary>
		/// Binding for glProgramUniform1dv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniform1(UInt32 program, int location, Int32 count, double* value) {
			unsafe {
				if      (Delegates.pglProgramUniform1dv != null)
					Delegates.pglProgramUniform1dv(program, location, count, value);
				else
					throw new InvalidOperationException("binding point ProgramUniform1 cannot be found");
			}
			LogProc("glProgramUniform1dv({0}, {1}, {2}, {3})", program, location, count, "value");
		}
		

		/// <summary>
		/// Binding for glProgramUniform1f function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v0">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniform1(UInt32 program, int location, float v0) {
			if      (Delegates.pglProgramUniform1f != null)
				Delegates.pglProgramUniform1f(program, location, v0);
			else
				throw new InvalidOperationException("binding point ProgramUniform1 cannot be found");
			LogProc("glProgramUniform1f({0}, {1}, {2})", program, location, v0);
		}

		/// <summary>
		/// Binding for glProgramUniform1fv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniform1(UInt32 program, int location, Int32 count, float[] value) {
			unsafe {
				fixed (float* fp_value = value)
				{
					if      (Delegates.pglProgramUniform1fv != null)
						Delegates.pglProgramUniform1fv(program, location, count, fp_value);
					else
						throw new InvalidOperationException("binding point ProgramUniform1 cannot be found");
				}
			}
			LogProc("glProgramUniform1fv({0}, {1}, {2}, {3})", program, location, count, value);
		}

		/// <summary>
		/// Binding for glProgramUniform1fv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniform1(UInt32 program, int location, Int32 count, float* value) {
			unsafe {
				if      (Delegates.pglProgramUniform1fv != null)
					Delegates.pglProgramUniform1fv(program, location, count, value);
				else
					throw new InvalidOperationException("binding point ProgramUniform1 cannot be found");
			}
			LogProc("glProgramUniform1fv({0}, {1}, {2}, {3})", program, location, count, "value");
		}
		

		/// <summary>
		/// Binding for glProgramUniform1i function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v0">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniform1(UInt32 program, int location, int v0) {
			if      (Delegates.pglProgramUniform1i != null)
				Delegates.pglProgramUniform1i(program, location, v0);
			else
				throw new InvalidOperationException("binding point ProgramUniform1 cannot be found");
			LogProc("glProgramUniform1i({0}, {1}, {2})", program, location, v0);
		}

		/// <summary>
		/// Binding for glProgramUniform1iv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniform1(UInt32 program, int location, Int32 count, int[] value) {
			unsafe {
				fixed (int* fp_value = value)
				{
					if      (Delegates.pglProgramUniform1iv != null)
						Delegates.pglProgramUniform1iv(program, location, count, fp_value);
					else
						throw new InvalidOperationException("binding point ProgramUniform1 cannot be found");
				}
			}
			LogProc("glProgramUniform1iv({0}, {1}, {2}, {3})", program, location, count, value);
		}

		/// <summary>
		/// Binding for glProgramUniform1iv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniform1(UInt32 program, int location, Int32 count, int* value) {
			unsafe {
				if      (Delegates.pglProgramUniform1iv != null)
					Delegates.pglProgramUniform1iv(program, location, count, value);
				else
					throw new InvalidOperationException("binding point ProgramUniform1 cannot be found");
			}
			LogProc("glProgramUniform1iv({0}, {1}, {2}, {3})", program, location, count, "value");
		}
		

		/// <summary>
		/// Binding for glProgramUniform1ui function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v0">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniform1(UInt32 program, int location, UInt32 v0) {
			if      (Delegates.pglProgramUniform1ui != null)
				Delegates.pglProgramUniform1ui(program, location, v0);
			else
				throw new InvalidOperationException("binding point ProgramUniform1 cannot be found");
			LogProc("glProgramUniform1ui({0}, {1}, {2})", program, location, v0);
		}

		/// <summary>
		/// Binding for glProgramUniform1uiv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniform1(UInt32 program, int location, Int32 count, UInt32[] value) {
			unsafe {
				fixed (UInt32* fp_value = value)
				{
					if      (Delegates.pglProgramUniform1uiv != null)
						Delegates.pglProgramUniform1uiv(program, location, count, fp_value);
					else
						throw new InvalidOperationException("binding point ProgramUniform1 cannot be found");
				}
			}
			LogProc("glProgramUniform1uiv({0}, {1}, {2}, {3})", program, location, count, value);
		}

		/// <summary>
		/// Binding for glProgramUniform1uiv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniform1(UInt32 program, int location, Int32 count, UInt32* value) {
			unsafe {
				if      (Delegates.pglProgramUniform1uiv != null)
					Delegates.pglProgramUniform1uiv(program, location, count, value);
				else
					throw new InvalidOperationException("binding point ProgramUniform1 cannot be found");
			}
			LogProc("glProgramUniform1uiv({0}, {1}, {2}, {3})", program, location, count, "value");
		}
		

		/// <summary>
		/// Binding for glProgramUniform2d function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v0">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="v1">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniform2(UInt32 program, int location, double v0, double v1) {
			if      (Delegates.pglProgramUniform2d != null)
				Delegates.pglProgramUniform2d(program, location, v0, v1);
			else
				throw new InvalidOperationException("binding point ProgramUniform2 cannot be found");
			LogProc("glProgramUniform2d({0}, {1}, {2}, {3})", program, location, v0, v1);
		}

		/// <summary>
		/// Binding for glProgramUniform2dv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniform2(UInt32 program, int location, Int32 count, double[] value) {
			unsafe {
				fixed (double* fp_value = value)
				{
					if      (Delegates.pglProgramUniform2dv != null)
						Delegates.pglProgramUniform2dv(program, location, count, fp_value);
					else
						throw new InvalidOperationException("binding point ProgramUniform2 cannot be found");
				}
			}
			LogProc("glProgramUniform2dv({0}, {1}, {2}, {3})", program, location, count, value);
		}

		/// <summary>
		/// Binding for glProgramUniform2dv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniform2(UInt32 program, int location, Int32 count, double* value) {
			unsafe {
				if      (Delegates.pglProgramUniform2dv != null)
					Delegates.pglProgramUniform2dv(program, location, count, value);
				else
					throw new InvalidOperationException("binding point ProgramUniform2 cannot be found");
			}
			LogProc("glProgramUniform2dv({0}, {1}, {2}, {3})", program, location, count, "value");
		}
		

		/// <summary>
		/// Binding for glProgramUniform2f function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v0">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="v1">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniform2(UInt32 program, int location, float v0, float v1) {
			if      (Delegates.pglProgramUniform2f != null)
				Delegates.pglProgramUniform2f(program, location, v0, v1);
			else
				throw new InvalidOperationException("binding point ProgramUniform2 cannot be found");
			LogProc("glProgramUniform2f({0}, {1}, {2}, {3})", program, location, v0, v1);
		}

		/// <summary>
		/// Binding for glProgramUniform2fv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniform2(UInt32 program, int location, Int32 count, float[] value) {
			unsafe {
				fixed (float* fp_value = value)
				{
					if      (Delegates.pglProgramUniform2fv != null)
						Delegates.pglProgramUniform2fv(program, location, count, fp_value);
					else
						throw new InvalidOperationException("binding point ProgramUniform2 cannot be found");
				}
			}
			LogProc("glProgramUniform2fv({0}, {1}, {2}, {3})", program, location, count, value);
		}

		/// <summary>
		/// Binding for glProgramUniform2fv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniform2(UInt32 program, int location, Int32 count, float* value) {
			unsafe {
				if      (Delegates.pglProgramUniform2fv != null)
					Delegates.pglProgramUniform2fv(program, location, count, value);
				else
					throw new InvalidOperationException("binding point ProgramUniform2 cannot be found");
			}
			LogProc("glProgramUniform2fv({0}, {1}, {2}, {3})", program, location, count, "value");
		}
		

		/// <summary>
		/// Binding for glProgramUniform2i function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v0">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v1">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniform2(UInt32 program, int location, int v0, int v1) {
			if      (Delegates.pglProgramUniform2i != null)
				Delegates.pglProgramUniform2i(program, location, v0, v1);
			else
				throw new InvalidOperationException("binding point ProgramUniform2 cannot be found");
			LogProc("glProgramUniform2i({0}, {1}, {2}, {3})", program, location, v0, v1);
		}

		/// <summary>
		/// Binding for glProgramUniform2iv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniform2(UInt32 program, int location, Int32 count, int[] value) {
			unsafe {
				fixed (int* fp_value = value)
				{
					if      (Delegates.pglProgramUniform2iv != null)
						Delegates.pglProgramUniform2iv(program, location, count, fp_value);
					else
						throw new InvalidOperationException("binding point ProgramUniform2 cannot be found");
				}
			}
			LogProc("glProgramUniform2iv({0}, {1}, {2}, {3})", program, location, count, value);
		}

		/// <summary>
		/// Binding for glProgramUniform2iv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniform2(UInt32 program, int location, Int32 count, int* value) {
			unsafe {
				if      (Delegates.pglProgramUniform2iv != null)
					Delegates.pglProgramUniform2iv(program, location, count, value);
				else
					throw new InvalidOperationException("binding point ProgramUniform2 cannot be found");
			}
			LogProc("glProgramUniform2iv({0}, {1}, {2}, {3})", program, location, count, "value");
		}
		

		/// <summary>
		/// Binding for glProgramUniform2ui function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v0">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v1">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniform2(UInt32 program, int location, UInt32 v0, UInt32 v1) {
			if      (Delegates.pglProgramUniform2ui != null)
				Delegates.pglProgramUniform2ui(program, location, v0, v1);
			else
				throw new InvalidOperationException("binding point ProgramUniform2 cannot be found");
			LogProc("glProgramUniform2ui({0}, {1}, {2}, {3})", program, location, v0, v1);
		}

		/// <summary>
		/// Binding for glProgramUniform2uiv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniform2(UInt32 program, int location, Int32 count, UInt32[] value) {
			unsafe {
				fixed (UInt32* fp_value = value)
				{
					if      (Delegates.pglProgramUniform2uiv != null)
						Delegates.pglProgramUniform2uiv(program, location, count, fp_value);
					else
						throw new InvalidOperationException("binding point ProgramUniform2 cannot be found");
				}
			}
			LogProc("glProgramUniform2uiv({0}, {1}, {2}, {3})", program, location, count, value);
		}

		/// <summary>
		/// Binding for glProgramUniform2uiv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniform2(UInt32 program, int location, Int32 count, UInt32* value) {
			unsafe {
				if      (Delegates.pglProgramUniform2uiv != null)
					Delegates.pglProgramUniform2uiv(program, location, count, value);
				else
					throw new InvalidOperationException("binding point ProgramUniform2 cannot be found");
			}
			LogProc("glProgramUniform2uiv({0}, {1}, {2}, {3})", program, location, count, "value");
		}
		

		/// <summary>
		/// Binding for glProgramUniform3d function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v0">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="v1">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="v2">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniform3(UInt32 program, int location, double v0, double v1, double v2) {
			if      (Delegates.pglProgramUniform3d != null)
				Delegates.pglProgramUniform3d(program, location, v0, v1, v2);
			else
				throw new InvalidOperationException("binding point ProgramUniform3 cannot be found");
			LogProc("glProgramUniform3d({0}, {1}, {2}, {3}, {4})", program, location, v0, v1, v2);
		}

		/// <summary>
		/// Binding for glProgramUniform3dv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniform3(UInt32 program, int location, Int32 count, double[] value) {
			unsafe {
				fixed (double* fp_value = value)
				{
					if      (Delegates.pglProgramUniform3dv != null)
						Delegates.pglProgramUniform3dv(program, location, count, fp_value);
					else
						throw new InvalidOperationException("binding point ProgramUniform3 cannot be found");
				}
			}
			LogProc("glProgramUniform3dv({0}, {1}, {2}, {3})", program, location, count, value);
		}

		/// <summary>
		/// Binding for glProgramUniform3dv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniform3(UInt32 program, int location, Int32 count, double* value) {
			unsafe {
				if      (Delegates.pglProgramUniform3dv != null)
					Delegates.pglProgramUniform3dv(program, location, count, value);
				else
					throw new InvalidOperationException("binding point ProgramUniform3 cannot be found");
			}
			LogProc("glProgramUniform3dv({0}, {1}, {2}, {3})", program, location, count, "value");
		}
		

		/// <summary>
		/// Binding for glProgramUniform3f function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v0">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="v1">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="v2">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniform3(UInt32 program, int location, float v0, float v1, float v2) {
			if      (Delegates.pglProgramUniform3f != null)
				Delegates.pglProgramUniform3f(program, location, v0, v1, v2);
			else
				throw new InvalidOperationException("binding point ProgramUniform3 cannot be found");
			LogProc("glProgramUniform3f({0}, {1}, {2}, {3}, {4})", program, location, v0, v1, v2);
		}

		/// <summary>
		/// Binding for glProgramUniform3fv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniform3(UInt32 program, int location, Int32 count, float[] value) {
			unsafe {
				fixed (float* fp_value = value)
				{
					if      (Delegates.pglProgramUniform3fv != null)
						Delegates.pglProgramUniform3fv(program, location, count, fp_value);
					else
						throw new InvalidOperationException("binding point ProgramUniform3 cannot be found");
				}
			}
			LogProc("glProgramUniform3fv({0}, {1}, {2}, {3})", program, location, count, value);
		}

		/// <summary>
		/// Binding for glProgramUniform3fv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniform3(UInt32 program, int location, Int32 count, float* value) {
			unsafe {
				if      (Delegates.pglProgramUniform3fv != null)
					Delegates.pglProgramUniform3fv(program, location, count, value);
				else
					throw new InvalidOperationException("binding point ProgramUniform3 cannot be found");
			}
			LogProc("glProgramUniform3fv({0}, {1}, {2}, {3})", program, location, count, "value");
		}
		

		/// <summary>
		/// Binding for glProgramUniform3i function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v0">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v1">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v2">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniform3(UInt32 program, int location, int v0, int v1, int v2) {
			if      (Delegates.pglProgramUniform3i != null)
				Delegates.pglProgramUniform3i(program, location, v0, v1, v2);
			else
				throw new InvalidOperationException("binding point ProgramUniform3 cannot be found");
			LogProc("glProgramUniform3i({0}, {1}, {2}, {3}, {4})", program, location, v0, v1, v2);
		}

		/// <summary>
		/// Binding for glProgramUniform3iv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniform3(UInt32 program, int location, Int32 count, int[] value) {
			unsafe {
				fixed (int* fp_value = value)
				{
					if      (Delegates.pglProgramUniform3iv != null)
						Delegates.pglProgramUniform3iv(program, location, count, fp_value);
					else
						throw new InvalidOperationException("binding point ProgramUniform3 cannot be found");
				}
			}
			LogProc("glProgramUniform3iv({0}, {1}, {2}, {3})", program, location, count, value);
		}

		/// <summary>
		/// Binding for glProgramUniform3iv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniform3(UInt32 program, int location, Int32 count, int* value) {
			unsafe {
				if      (Delegates.pglProgramUniform3iv != null)
					Delegates.pglProgramUniform3iv(program, location, count, value);
				else
					throw new InvalidOperationException("binding point ProgramUniform3 cannot be found");
			}
			LogProc("glProgramUniform3iv({0}, {1}, {2}, {3})", program, location, count, "value");
		}
		

		/// <summary>
		/// Binding for glProgramUniform3ui function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v0">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v1">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v2">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniform3(UInt32 program, int location, UInt32 v0, UInt32 v1, UInt32 v2) {
			if      (Delegates.pglProgramUniform3ui != null)
				Delegates.pglProgramUniform3ui(program, location, v0, v1, v2);
			else
				throw new InvalidOperationException("binding point ProgramUniform3 cannot be found");
			LogProc("glProgramUniform3ui({0}, {1}, {2}, {3}, {4})", program, location, v0, v1, v2);
		}

		/// <summary>
		/// Binding for glProgramUniform3uiv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniform3(UInt32 program, int location, Int32 count, UInt32[] value) {
			unsafe {
				fixed (UInt32* fp_value = value)
				{
					if      (Delegates.pglProgramUniform3uiv != null)
						Delegates.pglProgramUniform3uiv(program, location, count, fp_value);
					else
						throw new InvalidOperationException("binding point ProgramUniform3 cannot be found");
				}
			}
			LogProc("glProgramUniform3uiv({0}, {1}, {2}, {3})", program, location, count, value);
		}

		/// <summary>
		/// Binding for glProgramUniform3uiv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniform3(UInt32 program, int location, Int32 count, UInt32* value) {
			unsafe {
				if      (Delegates.pglProgramUniform3uiv != null)
					Delegates.pglProgramUniform3uiv(program, location, count, value);
				else
					throw new InvalidOperationException("binding point ProgramUniform3 cannot be found");
			}
			LogProc("glProgramUniform3uiv({0}, {1}, {2}, {3})", program, location, count, "value");
		}
		

		/// <summary>
		/// Binding for glProgramUniform4d function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v0">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="v1">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="v2">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="v3">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniform4(UInt32 program, int location, double v0, double v1, double v2, double v3) {
			if      (Delegates.pglProgramUniform4d != null)
				Delegates.pglProgramUniform4d(program, location, v0, v1, v2, v3);
			else
				throw new InvalidOperationException("binding point ProgramUniform4 cannot be found");
			LogProc("glProgramUniform4d({0}, {1}, {2}, {3}, {4}, {5})", program, location, v0, v1, v2, v3);
		}

		/// <summary>
		/// Binding for glProgramUniform4dv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniform4(UInt32 program, int location, Int32 count, double[] value) {
			unsafe {
				fixed (double* fp_value = value)
				{
					if      (Delegates.pglProgramUniform4dv != null)
						Delegates.pglProgramUniform4dv(program, location, count, fp_value);
					else
						throw new InvalidOperationException("binding point ProgramUniform4 cannot be found");
				}
			}
			LogProc("glProgramUniform4dv({0}, {1}, {2}, {3})", program, location, count, value);
		}

		/// <summary>
		/// Binding for glProgramUniform4dv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniform4(UInt32 program, int location, Int32 count, double* value) {
			unsafe {
				if      (Delegates.pglProgramUniform4dv != null)
					Delegates.pglProgramUniform4dv(program, location, count, value);
				else
					throw new InvalidOperationException("binding point ProgramUniform4 cannot be found");
			}
			LogProc("glProgramUniform4dv({0}, {1}, {2}, {3})", program, location, count, "value");
		}
		

		/// <summary>
		/// Binding for glProgramUniform4f function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v0">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="v1">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="v2">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="v3">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniform4(UInt32 program, int location, float v0, float v1, float v2, float v3) {
			if      (Delegates.pglProgramUniform4f != null)
				Delegates.pglProgramUniform4f(program, location, v0, v1, v2, v3);
			else
				throw new InvalidOperationException("binding point ProgramUniform4 cannot be found");
			LogProc("glProgramUniform4f({0}, {1}, {2}, {3}, {4}, {5})", program, location, v0, v1, v2, v3);
		}

		/// <summary>
		/// Binding for glProgramUniform4fv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniform4(UInt32 program, int location, Int32 count, float[] value) {
			unsafe {
				fixed (float* fp_value = value)
				{
					if      (Delegates.pglProgramUniform4fv != null)
						Delegates.pglProgramUniform4fv(program, location, count, fp_value);
					else
						throw new InvalidOperationException("binding point ProgramUniform4 cannot be found");
				}
			}
			LogProc("glProgramUniform4fv({0}, {1}, {2}, {3})", program, location, count, value);
		}

		/// <summary>
		/// Binding for glProgramUniform4fv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniform4(UInt32 program, int location, Int32 count, float* value) {
			unsafe {
				if      (Delegates.pglProgramUniform4fv != null)
					Delegates.pglProgramUniform4fv(program, location, count, value);
				else
					throw new InvalidOperationException("binding point ProgramUniform4 cannot be found");
			}
			LogProc("glProgramUniform4fv({0}, {1}, {2}, {3})", program, location, count, "value");
		}
		

		/// <summary>
		/// Binding for glProgramUniform4i function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v0">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v1">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v2">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v3">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniform4(UInt32 program, int location, int v0, int v1, int v2, int v3) {
			if      (Delegates.pglProgramUniform4i != null)
				Delegates.pglProgramUniform4i(program, location, v0, v1, v2, v3);
			else
				throw new InvalidOperationException("binding point ProgramUniform4 cannot be found");
			LogProc("glProgramUniform4i({0}, {1}, {2}, {3}, {4}, {5})", program, location, v0, v1, v2, v3);
		}

		/// <summary>
		/// Binding for glProgramUniform4iv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniform4(UInt32 program, int location, Int32 count, int[] value) {
			unsafe {
				fixed (int* fp_value = value)
				{
					if      (Delegates.pglProgramUniform4iv != null)
						Delegates.pglProgramUniform4iv(program, location, count, fp_value);
					else
						throw new InvalidOperationException("binding point ProgramUniform4 cannot be found");
				}
			}
			LogProc("glProgramUniform4iv({0}, {1}, {2}, {3})", program, location, count, value);
		}

		/// <summary>
		/// Binding for glProgramUniform4iv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniform4(UInt32 program, int location, Int32 count, int* value) {
			unsafe {
				if      (Delegates.pglProgramUniform4iv != null)
					Delegates.pglProgramUniform4iv(program, location, count, value);
				else
					throw new InvalidOperationException("binding point ProgramUniform4 cannot be found");
			}
			LogProc("glProgramUniform4iv({0}, {1}, {2}, {3})", program, location, count, "value");
		}
		

		/// <summary>
		/// Binding for glProgramUniform4ui function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v0">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v1">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v2">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v3">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniform4(UInt32 program, int location, UInt32 v0, UInt32 v1, UInt32 v2, UInt32 v3) {
			if      (Delegates.pglProgramUniform4ui != null)
				Delegates.pglProgramUniform4ui(program, location, v0, v1, v2, v3);
			else
				throw new InvalidOperationException("binding point ProgramUniform4 cannot be found");
			LogProc("glProgramUniform4ui({0}, {1}, {2}, {3}, {4}, {5})", program, location, v0, v1, v2, v3);
		}

		/// <summary>
		/// Binding for glProgramUniform4uiv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniform4(UInt32 program, int location, Int32 count, UInt32[] value) {
			unsafe {
				fixed (UInt32* fp_value = value)
				{
					if      (Delegates.pglProgramUniform4uiv != null)
						Delegates.pglProgramUniform4uiv(program, location, count, fp_value);
					else
						throw new InvalidOperationException("binding point ProgramUniform4 cannot be found");
				}
			}
			LogProc("glProgramUniform4uiv({0}, {1}, {2}, {3})", program, location, count, value);
		}

		/// <summary>
		/// Binding for glProgramUniform4uiv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniform4(UInt32 program, int location, Int32 count, UInt32* value) {
			unsafe {
				if      (Delegates.pglProgramUniform4uiv != null)
					Delegates.pglProgramUniform4uiv(program, location, count, value);
				else
					throw new InvalidOperationException("binding point ProgramUniform4 cannot be found");
			}
			LogProc("glProgramUniform4uiv({0}, {1}, {2}, {3})", program, location, count, "value");
		}
		

		/// <summary>
		/// Binding for glProgramUniformMatrix2dv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniformMatrix2(UInt32 program, int location, Int32 count, bool transpose, double[] value) {
			unsafe {
				fixed (double* fp_value = value)
				{
					if      (Delegates.pglProgramUniformMatrix2dv != null)
						Delegates.pglProgramUniformMatrix2dv(program, location, count, transpose, fp_value);
					else
						throw new InvalidOperationException("binding point ProgramUniformMatrix2 cannot be found");
				}
			}
			LogProc("glProgramUniformMatrix2dv({0}, {1}, {2}, {3}, {4})", program, location, count, transpose, value);
		}

		/// <summary>
		/// Binding for glProgramUniformMatrix2dv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniformMatrix2(UInt32 program, int location, Int32 count, bool transpose, double* value) {
			unsafe {
				if      (Delegates.pglProgramUniformMatrix2dv != null)
					Delegates.pglProgramUniformMatrix2dv(program, location, count, transpose, value);
				else
					throw new InvalidOperationException("binding point ProgramUniformMatrix2 cannot be found");
			}
			LogProc("glProgramUniformMatrix2dv({0}, {1}, {2}, {3}, {4})", program, location, count, transpose, "value");
		}
		

		/// <summary>
		/// Binding for glProgramUniformMatrix2fv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniformMatrix2(UInt32 program, int location, Int32 count, bool transpose, float[] value) {
			unsafe {
				fixed (float* fp_value = value)
				{
					if      (Delegates.pglProgramUniformMatrix2fv != null)
						Delegates.pglProgramUniformMatrix2fv(program, location, count, transpose, fp_value);
					else
						throw new InvalidOperationException("binding point ProgramUniformMatrix2 cannot be found");
				}
			}
			LogProc("glProgramUniformMatrix2fv({0}, {1}, {2}, {3}, {4})", program, location, count, transpose, value);
		}

		/// <summary>
		/// Binding for glProgramUniformMatrix2fv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniformMatrix2(UInt32 program, int location, Int32 count, bool transpose, float* value) {
			unsafe {
				if      (Delegates.pglProgramUniformMatrix2fv != null)
					Delegates.pglProgramUniformMatrix2fv(program, location, count, transpose, value);
				else
					throw new InvalidOperationException("binding point ProgramUniformMatrix2 cannot be found");
			}
			LogProc("glProgramUniformMatrix2fv({0}, {1}, {2}, {3}, {4})", program, location, count, transpose, "value");
		}
		

		/// <summary>
		/// Binding for glProgramUniformMatrix2x3dv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniformMatrix2x3(UInt32 program, int location, Int32 count, bool transpose, double[] value) {
			unsafe {
				fixed (double* fp_value = value)
				{
					if      (Delegates.pglProgramUniformMatrix2x3dv != null)
						Delegates.pglProgramUniformMatrix2x3dv(program, location, count, transpose, fp_value);
					else
						throw new InvalidOperationException("binding point ProgramUniformMatrix2x3 cannot be found");
				}
			}
			LogProc("glProgramUniformMatrix2x3dv({0}, {1}, {2}, {3}, {4})", program, location, count, transpose, value);
		}

		/// <summary>
		/// Binding for glProgramUniformMatrix2x3dv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniformMatrix2x3(UInt32 program, int location, Int32 count, bool transpose, double* value) {
			unsafe {
				if      (Delegates.pglProgramUniformMatrix2x3dv != null)
					Delegates.pglProgramUniformMatrix2x3dv(program, location, count, transpose, value);
				else
					throw new InvalidOperationException("binding point ProgramUniformMatrix2x3 cannot be found");
			}
			LogProc("glProgramUniformMatrix2x3dv({0}, {1}, {2}, {3}, {4})", program, location, count, transpose, "value");
		}
		

		/// <summary>
		/// Binding for glProgramUniformMatrix2x3fv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniformMatrix2x3(UInt32 program, int location, Int32 count, bool transpose, float[] value) {
			unsafe {
				fixed (float* fp_value = value)
				{
					if      (Delegates.pglProgramUniformMatrix2x3fv != null)
						Delegates.pglProgramUniformMatrix2x3fv(program, location, count, transpose, fp_value);
					else
						throw new InvalidOperationException("binding point ProgramUniformMatrix2x3 cannot be found");
				}
			}
			LogProc("glProgramUniformMatrix2x3fv({0}, {1}, {2}, {3}, {4})", program, location, count, transpose, value);
		}

		/// <summary>
		/// Binding for glProgramUniformMatrix2x3fv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniformMatrix2x3(UInt32 program, int location, Int32 count, bool transpose, float* value) {
			unsafe {
				if      (Delegates.pglProgramUniformMatrix2x3fv != null)
					Delegates.pglProgramUniformMatrix2x3fv(program, location, count, transpose, value);
				else
					throw new InvalidOperationException("binding point ProgramUniformMatrix2x3 cannot be found");
			}
			LogProc("glProgramUniformMatrix2x3fv({0}, {1}, {2}, {3}, {4})", program, location, count, transpose, "value");
		}
		

		/// <summary>
		/// Binding for glProgramUniformMatrix2x4dv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniformMatrix2x4(UInt32 program, int location, Int32 count, bool transpose, double[] value) {
			unsafe {
				fixed (double* fp_value = value)
				{
					if      (Delegates.pglProgramUniformMatrix2x4dv != null)
						Delegates.pglProgramUniformMatrix2x4dv(program, location, count, transpose, fp_value);
					else
						throw new InvalidOperationException("binding point ProgramUniformMatrix2x4 cannot be found");
				}
			}
			LogProc("glProgramUniformMatrix2x4dv({0}, {1}, {2}, {3}, {4})", program, location, count, transpose, value);
		}

		/// <summary>
		/// Binding for glProgramUniformMatrix2x4dv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniformMatrix2x4(UInt32 program, int location, Int32 count, bool transpose, double* value) {
			unsafe {
				if      (Delegates.pglProgramUniformMatrix2x4dv != null)
					Delegates.pglProgramUniformMatrix2x4dv(program, location, count, transpose, value);
				else
					throw new InvalidOperationException("binding point ProgramUniformMatrix2x4 cannot be found");
			}
			LogProc("glProgramUniformMatrix2x4dv({0}, {1}, {2}, {3}, {4})", program, location, count, transpose, "value");
		}
		

		/// <summary>
		/// Binding for glProgramUniformMatrix2x4fv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniformMatrix2x4(UInt32 program, int location, Int32 count, bool transpose, float[] value) {
			unsafe {
				fixed (float* fp_value = value)
				{
					if      (Delegates.pglProgramUniformMatrix2x4fv != null)
						Delegates.pglProgramUniformMatrix2x4fv(program, location, count, transpose, fp_value);
					else
						throw new InvalidOperationException("binding point ProgramUniformMatrix2x4 cannot be found");
				}
			}
			LogProc("glProgramUniformMatrix2x4fv({0}, {1}, {2}, {3}, {4})", program, location, count, transpose, value);
		}

		/// <summary>
		/// Binding for glProgramUniformMatrix2x4fv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniformMatrix2x4(UInt32 program, int location, Int32 count, bool transpose, float* value) {
			unsafe {
				if      (Delegates.pglProgramUniformMatrix2x4fv != null)
					Delegates.pglProgramUniformMatrix2x4fv(program, location, count, transpose, value);
				else
					throw new InvalidOperationException("binding point ProgramUniformMatrix2x4 cannot be found");
			}
			LogProc("glProgramUniformMatrix2x4fv({0}, {1}, {2}, {3}, {4})", program, location, count, transpose, "value");
		}
		

		/// <summary>
		/// Binding for glProgramUniformMatrix3dv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniformMatrix3(UInt32 program, int location, Int32 count, bool transpose, double[] value) {
			unsafe {
				fixed (double* fp_value = value)
				{
					if      (Delegates.pglProgramUniformMatrix3dv != null)
						Delegates.pglProgramUniformMatrix3dv(program, location, count, transpose, fp_value);
					else
						throw new InvalidOperationException("binding point ProgramUniformMatrix3 cannot be found");
				}
			}
			LogProc("glProgramUniformMatrix3dv({0}, {1}, {2}, {3}, {4})", program, location, count, transpose, value);
		}

		/// <summary>
		/// Binding for glProgramUniformMatrix3dv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniformMatrix3(UInt32 program, int location, Int32 count, bool transpose, double* value) {
			unsafe {
				if      (Delegates.pglProgramUniformMatrix3dv != null)
					Delegates.pglProgramUniformMatrix3dv(program, location, count, transpose, value);
				else
					throw new InvalidOperationException("binding point ProgramUniformMatrix3 cannot be found");
			}
			LogProc("glProgramUniformMatrix3dv({0}, {1}, {2}, {3}, {4})", program, location, count, transpose, "value");
		}
		

		/// <summary>
		/// Binding for glProgramUniformMatrix3fv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniformMatrix3(UInt32 program, int location, Int32 count, bool transpose, float[] value) {
			unsafe {
				fixed (float* fp_value = value)
				{
					if      (Delegates.pglProgramUniformMatrix3fv != null)
						Delegates.pglProgramUniformMatrix3fv(program, location, count, transpose, fp_value);
					else
						throw new InvalidOperationException("binding point ProgramUniformMatrix3 cannot be found");
				}
			}
			LogProc("glProgramUniformMatrix3fv({0}, {1}, {2}, {3}, {4})", program, location, count, transpose, value);
		}

		/// <summary>
		/// Binding for glProgramUniformMatrix3fv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniformMatrix3(UInt32 program, int location, Int32 count, bool transpose, float* value) {
			unsafe {
				if      (Delegates.pglProgramUniformMatrix3fv != null)
					Delegates.pglProgramUniformMatrix3fv(program, location, count, transpose, value);
				else
					throw new InvalidOperationException("binding point ProgramUniformMatrix3 cannot be found");
			}
			LogProc("glProgramUniformMatrix3fv({0}, {1}, {2}, {3}, {4})", program, location, count, transpose, "value");
		}
		

		/// <summary>
		/// Binding for glProgramUniformMatrix3x2dv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniformMatrix3x2(UInt32 program, int location, Int32 count, bool transpose, double[] value) {
			unsafe {
				fixed (double* fp_value = value)
				{
					if      (Delegates.pglProgramUniformMatrix3x2dv != null)
						Delegates.pglProgramUniformMatrix3x2dv(program, location, count, transpose, fp_value);
					else
						throw new InvalidOperationException("binding point ProgramUniformMatrix3x2 cannot be found");
				}
			}
			LogProc("glProgramUniformMatrix3x2dv({0}, {1}, {2}, {3}, {4})", program, location, count, transpose, value);
		}

		/// <summary>
		/// Binding for glProgramUniformMatrix3x2dv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniformMatrix3x2(UInt32 program, int location, Int32 count, bool transpose, double* value) {
			unsafe {
				if      (Delegates.pglProgramUniformMatrix3x2dv != null)
					Delegates.pglProgramUniformMatrix3x2dv(program, location, count, transpose, value);
				else
					throw new InvalidOperationException("binding point ProgramUniformMatrix3x2 cannot be found");
			}
			LogProc("glProgramUniformMatrix3x2dv({0}, {1}, {2}, {3}, {4})", program, location, count, transpose, "value");
		}
		

		/// <summary>
		/// Binding for glProgramUniformMatrix3x2fv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniformMatrix3x2(UInt32 program, int location, Int32 count, bool transpose, float[] value) {
			unsafe {
				fixed (float* fp_value = value)
				{
					if      (Delegates.pglProgramUniformMatrix3x2fv != null)
						Delegates.pglProgramUniformMatrix3x2fv(program, location, count, transpose, fp_value);
					else
						throw new InvalidOperationException("binding point ProgramUniformMatrix3x2 cannot be found");
				}
			}
			LogProc("glProgramUniformMatrix3x2fv({0}, {1}, {2}, {3}, {4})", program, location, count, transpose, value);
		}

		/// <summary>
		/// Binding for glProgramUniformMatrix3x2fv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniformMatrix3x2(UInt32 program, int location, Int32 count, bool transpose, float* value) {
			unsafe {
				if      (Delegates.pglProgramUniformMatrix3x2fv != null)
					Delegates.pglProgramUniformMatrix3x2fv(program, location, count, transpose, value);
				else
					throw new InvalidOperationException("binding point ProgramUniformMatrix3x2 cannot be found");
			}
			LogProc("glProgramUniformMatrix3x2fv({0}, {1}, {2}, {3}, {4})", program, location, count, transpose, "value");
		}
		

		/// <summary>
		/// Binding for glProgramUniformMatrix3x4dv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniformMatrix3x4(UInt32 program, int location, Int32 count, bool transpose, double[] value) {
			unsafe {
				fixed (double* fp_value = value)
				{
					if      (Delegates.pglProgramUniformMatrix3x4dv != null)
						Delegates.pglProgramUniformMatrix3x4dv(program, location, count, transpose, fp_value);
					else
						throw new InvalidOperationException("binding point ProgramUniformMatrix3x4 cannot be found");
				}
			}
			LogProc("glProgramUniformMatrix3x4dv({0}, {1}, {2}, {3}, {4})", program, location, count, transpose, value);
		}

		/// <summary>
		/// Binding for glProgramUniformMatrix3x4dv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniformMatrix3x4(UInt32 program, int location, Int32 count, bool transpose, double* value) {
			unsafe {
				if      (Delegates.pglProgramUniformMatrix3x4dv != null)
					Delegates.pglProgramUniformMatrix3x4dv(program, location, count, transpose, value);
				else
					throw new InvalidOperationException("binding point ProgramUniformMatrix3x4 cannot be found");
			}
			LogProc("glProgramUniformMatrix3x4dv({0}, {1}, {2}, {3}, {4})", program, location, count, transpose, "value");
		}
		

		/// <summary>
		/// Binding for glProgramUniformMatrix3x4fv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniformMatrix3x4(UInt32 program, int location, Int32 count, bool transpose, float[] value) {
			unsafe {
				fixed (float* fp_value = value)
				{
					if      (Delegates.pglProgramUniformMatrix3x4fv != null)
						Delegates.pglProgramUniformMatrix3x4fv(program, location, count, transpose, fp_value);
					else
						throw new InvalidOperationException("binding point ProgramUniformMatrix3x4 cannot be found");
				}
			}
			LogProc("glProgramUniformMatrix3x4fv({0}, {1}, {2}, {3}, {4})", program, location, count, transpose, value);
		}

		/// <summary>
		/// Binding for glProgramUniformMatrix3x4fv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniformMatrix3x4(UInt32 program, int location, Int32 count, bool transpose, float* value) {
			unsafe {
				if      (Delegates.pglProgramUniformMatrix3x4fv != null)
					Delegates.pglProgramUniformMatrix3x4fv(program, location, count, transpose, value);
				else
					throw new InvalidOperationException("binding point ProgramUniformMatrix3x4 cannot be found");
			}
			LogProc("glProgramUniformMatrix3x4fv({0}, {1}, {2}, {3}, {4})", program, location, count, transpose, "value");
		}
		

		/// <summary>
		/// Binding for glProgramUniformMatrix4dv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniformMatrix4(UInt32 program, int location, Int32 count, bool transpose, double[] value) {
			unsafe {
				fixed (double* fp_value = value)
				{
					if      (Delegates.pglProgramUniformMatrix4dv != null)
						Delegates.pglProgramUniformMatrix4dv(program, location, count, transpose, fp_value);
					else
						throw new InvalidOperationException("binding point ProgramUniformMatrix4 cannot be found");
				}
			}
			LogProc("glProgramUniformMatrix4dv({0}, {1}, {2}, {3}, {4})", program, location, count, transpose, value);
		}

		/// <summary>
		/// Binding for glProgramUniformMatrix4dv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniformMatrix4(UInt32 program, int location, Int32 count, bool transpose, double* value) {
			unsafe {
				if      (Delegates.pglProgramUniformMatrix4dv != null)
					Delegates.pglProgramUniformMatrix4dv(program, location, count, transpose, value);
				else
					throw new InvalidOperationException("binding point ProgramUniformMatrix4 cannot be found");
			}
			LogProc("glProgramUniformMatrix4dv({0}, {1}, {2}, {3}, {4})", program, location, count, transpose, "value");
		}
		

		/// <summary>
		/// Binding for glProgramUniformMatrix4fv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniformMatrix4(UInt32 program, int location, Int32 count, bool transpose, float[] value) {
			unsafe {
				fixed (float* fp_value = value)
				{
					if      (Delegates.pglProgramUniformMatrix4fv != null)
						Delegates.pglProgramUniformMatrix4fv(program, location, count, transpose, fp_value);
					else
						throw new InvalidOperationException("binding point ProgramUniformMatrix4 cannot be found");
				}
			}
			LogProc("glProgramUniformMatrix4fv({0}, {1}, {2}, {3}, {4})", program, location, count, transpose, value);
		}

		/// <summary>
		/// Binding for glProgramUniformMatrix4fv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniformMatrix4(UInt32 program, int location, Int32 count, bool transpose, float* value) {
			unsafe {
				if      (Delegates.pglProgramUniformMatrix4fv != null)
					Delegates.pglProgramUniformMatrix4fv(program, location, count, transpose, value);
				else
					throw new InvalidOperationException("binding point ProgramUniformMatrix4 cannot be found");
			}
			LogProc("glProgramUniformMatrix4fv({0}, {1}, {2}, {3}, {4})", program, location, count, transpose, "value");
		}
		

		/// <summary>
		/// Binding for glProgramUniformMatrix4x2dv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniformMatrix4x2(UInt32 program, int location, Int32 count, bool transpose, double[] value) {
			unsafe {
				fixed (double* fp_value = value)
				{
					if      (Delegates.pglProgramUniformMatrix4x2dv != null)
						Delegates.pglProgramUniformMatrix4x2dv(program, location, count, transpose, fp_value);
					else
						throw new InvalidOperationException("binding point ProgramUniformMatrix4x2 cannot be found");
				}
			}
			LogProc("glProgramUniformMatrix4x2dv({0}, {1}, {2}, {3}, {4})", program, location, count, transpose, value);
		}

		/// <summary>
		/// Binding for glProgramUniformMatrix4x2dv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniformMatrix4x2(UInt32 program, int location, Int32 count, bool transpose, double* value) {
			unsafe {
				if      (Delegates.pglProgramUniformMatrix4x2dv != null)
					Delegates.pglProgramUniformMatrix4x2dv(program, location, count, transpose, value);
				else
					throw new InvalidOperationException("binding point ProgramUniformMatrix4x2 cannot be found");
			}
			LogProc("glProgramUniformMatrix4x2dv({0}, {1}, {2}, {3}, {4})", program, location, count, transpose, "value");
		}
		

		/// <summary>
		/// Binding for glProgramUniformMatrix4x2fv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniformMatrix4x2(UInt32 program, int location, Int32 count, bool transpose, float[] value) {
			unsafe {
				fixed (float* fp_value = value)
				{
					if      (Delegates.pglProgramUniformMatrix4x2fv != null)
						Delegates.pglProgramUniformMatrix4x2fv(program, location, count, transpose, fp_value);
					else
						throw new InvalidOperationException("binding point ProgramUniformMatrix4x2 cannot be found");
				}
			}
			LogProc("glProgramUniformMatrix4x2fv({0}, {1}, {2}, {3}, {4})", program, location, count, transpose, value);
		}

		/// <summary>
		/// Binding for glProgramUniformMatrix4x2fv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniformMatrix4x2(UInt32 program, int location, Int32 count, bool transpose, float* value) {
			unsafe {
				if      (Delegates.pglProgramUniformMatrix4x2fv != null)
					Delegates.pglProgramUniformMatrix4x2fv(program, location, count, transpose, value);
				else
					throw new InvalidOperationException("binding point ProgramUniformMatrix4x2 cannot be found");
			}
			LogProc("glProgramUniformMatrix4x2fv({0}, {1}, {2}, {3}, {4})", program, location, count, transpose, "value");
		}
		

		/// <summary>
		/// Binding for glProgramUniformMatrix4x3dv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniformMatrix4x3(UInt32 program, int location, Int32 count, bool transpose, double[] value) {
			unsafe {
				fixed (double* fp_value = value)
				{
					if      (Delegates.pglProgramUniformMatrix4x3dv != null)
						Delegates.pglProgramUniformMatrix4x3dv(program, location, count, transpose, fp_value);
					else
						throw new InvalidOperationException("binding point ProgramUniformMatrix4x3 cannot be found");
				}
			}
			LogProc("glProgramUniformMatrix4x3dv({0}, {1}, {2}, {3}, {4})", program, location, count, transpose, value);
		}

		/// <summary>
		/// Binding for glProgramUniformMatrix4x3dv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniformMatrix4x3(UInt32 program, int location, Int32 count, bool transpose, double* value) {
			unsafe {
				if      (Delegates.pglProgramUniformMatrix4x3dv != null)
					Delegates.pglProgramUniformMatrix4x3dv(program, location, count, transpose, value);
				else
					throw new InvalidOperationException("binding point ProgramUniformMatrix4x3 cannot be found");
			}
			LogProc("glProgramUniformMatrix4x3dv({0}, {1}, {2}, {3}, {4})", program, location, count, transpose, "value");
		}
		

		/// <summary>
		/// Binding for glProgramUniformMatrix4x3fv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniformMatrix4x3(UInt32 program, int location, Int32 count, bool transpose, float[] value) {
			unsafe {
				fixed (float* fp_value = value)
				{
					if      (Delegates.pglProgramUniformMatrix4x3fv != null)
						Delegates.pglProgramUniformMatrix4x3fv(program, location, count, transpose, fp_value);
					else
						throw new InvalidOperationException("binding point ProgramUniformMatrix4x3 cannot be found");
				}
			}
			LogProc("glProgramUniformMatrix4x3fv({0}, {1}, {2}, {3}, {4})", program, location, count, transpose, value);
		}

		/// <summary>
		/// Binding for glProgramUniformMatrix4x3fv function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ProgramUniformMatrix4x3(UInt32 program, int location, Int32 count, bool transpose, float* value) {
			unsafe {
				if      (Delegates.pglProgramUniformMatrix4x3fv != null)
					Delegates.pglProgramUniformMatrix4x3fv(program, location, count, transpose, value);
				else
					throw new InvalidOperationException("binding point ProgramUniformMatrix4x3 cannot be found");
			}
			LogProc("glProgramUniformMatrix4x3fv({0}, {1}, {2}, {3}, {4})", program, location, count, transpose, "value");
		}
		

		/// <summary>
		/// Binding for glProvokingVertex function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void ProvokingVertex(int mode) {
			if      (Delegates.pglProvokingVertex != null)
				Delegates.pglProvokingVertex(mode);
			else
				throw new InvalidOperationException("binding point ProvokingVertex cannot be found");
			LogProc("glProvokingVertex({0})", mode);
		}

		/// <summary>
		/// Binding for glPushAttrib function.
		/// </summary>
		/// <param name="mask">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void PushAttrib(uint mask) {
			if      (Delegates.pglPushAttrib != null)
				Delegates.pglPushAttrib(mask);
			else
				throw new InvalidOperationException("binding point PushAttrib cannot be found");
			LogProc("glPushAttrib({0})", mask);
		}

		/// <summary>
		/// Binding for glPushClientAttrib function.
		/// </summary>
		/// <param name="mask">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		/// @deprecated
		public static void PushClientAttrib(uint mask) {
			if      (Delegates.pglPushClientAttrib != null)
				Delegates.pglPushClientAttrib(mask);
			else
				throw new InvalidOperationException("binding point PushClientAttrib cannot be found");
			LogProc("glPushClientAttrib({0})", mask);
		}

		/// <summary>
		/// Binding for glPushMatrix function.
		/// </summary>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void PushMatrix() {
			if      (Delegates.pglPushMatrix != null)
				Delegates.pglPushMatrix();
			else
				throw new InvalidOperationException("binding point PushMatrix cannot be found");
			LogProc("glPushMatrix()");
		}

		/// <summary>
		/// Binding for glPushName function.
		/// </summary>
		/// <param name="name">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void PushName(UInt32 name) {
			if      (Delegates.pglPushName != null)
				Delegates.pglPushName(name);
			else
				throw new InvalidOperationException("binding point PushName cannot be found");
			LogProc("glPushName({0})", name);
		}

		/// <summary>
		/// Binding for glQueryCounter function.
		/// </summary>
		/// <param name="id">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void QueryCounter(UInt32 id, int target) {
			if      (Delegates.pglQueryCounter != null)
				Delegates.pglQueryCounter(id, target);
			else
				throw new InvalidOperationException("binding point QueryCounter cannot be found");
			LogProc("glQueryCounter({0}, {1})", id, target);
		}

		/// <summary>
		/// Binding for glRasterPos2d function.
		/// </summary>
		/// <param name="x">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void RasterPos2(double x, double y) {
			if      (Delegates.pglRasterPos2d != null)
				Delegates.pglRasterPos2d(x, y);
			else
				throw new InvalidOperationException("binding point RasterPos2 cannot be found");
			LogProc("glRasterPos2d({0}, {1})", x, y);
		}

		/// <summary>
		/// Binding for glRasterPos2dv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void RasterPos2(double[] v) {
			unsafe {
				fixed (double* fp_v = v)
				{
					if      (Delegates.pglRasterPos2dv != null)
						Delegates.pglRasterPos2dv(fp_v);
					else
						throw new InvalidOperationException("binding point RasterPos2 cannot be found");
				}
			}
			LogProc("glRasterPos2dv({0})", v);
		}

		/// <summary>
		/// Binding for glRasterPos2f function.
		/// </summary>
		/// <param name="x">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void RasterPos2(float x, float y) {
			if      (Delegates.pglRasterPos2f != null)
				Delegates.pglRasterPos2f(x, y);
			else
				throw new InvalidOperationException("binding point RasterPos2 cannot be found");
			LogProc("glRasterPos2f({0}, {1})", x, y);
		}

		/// <summary>
		/// Binding for glRasterPos2fv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void RasterPos2(float[] v) {
			unsafe {
				fixed (float* fp_v = v)
				{
					if      (Delegates.pglRasterPos2fv != null)
						Delegates.pglRasterPos2fv(fp_v);
					else
						throw new InvalidOperationException("binding point RasterPos2 cannot be found");
				}
			}
			LogProc("glRasterPos2fv({0})", v);
		}

		/// <summary>
		/// Binding for glRasterPos2i function.
		/// </summary>
		/// <param name="x">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void RasterPos2(int x, int y) {
			if      (Delegates.pglRasterPos2i != null)
				Delegates.pglRasterPos2i(x, y);
			else
				throw new InvalidOperationException("binding point RasterPos2 cannot be found");
			LogProc("glRasterPos2i({0}, {1})", x, y);
		}

		/// <summary>
		/// Binding for glRasterPos2iv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void RasterPos2(int[] v) {
			unsafe {
				fixed (int* fp_v = v)
				{
					if      (Delegates.pglRasterPos2iv != null)
						Delegates.pglRasterPos2iv(fp_v);
					else
						throw new InvalidOperationException("binding point RasterPos2 cannot be found");
				}
			}
			LogProc("glRasterPos2iv({0})", v);
		}

		/// <summary>
		/// Binding for glRasterPos2s function.
		/// </summary>
		/// <param name="x">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void RasterPos2(Int16 x, Int16 y) {
			if      (Delegates.pglRasterPos2s != null)
				Delegates.pglRasterPos2s(x, y);
			else
				throw new InvalidOperationException("binding point RasterPos2 cannot be found");
			LogProc("glRasterPos2s({0}, {1})", x, y);
		}

		/// <summary>
		/// Binding for glRasterPos2sv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Int16*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void RasterPos2(Int16[] v) {
			unsafe {
				fixed (Int16* fp_v = v)
				{
					if      (Delegates.pglRasterPos2sv != null)
						Delegates.pglRasterPos2sv(fp_v);
					else
						throw new InvalidOperationException("binding point RasterPos2 cannot be found");
				}
			}
			LogProc("glRasterPos2sv({0})", v);
		}

		/// <summary>
		/// Binding for glRasterPos3d function.
		/// </summary>
		/// <param name="x">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void RasterPos3(double x, double y, double z) {
			if      (Delegates.pglRasterPos3d != null)
				Delegates.pglRasterPos3d(x, y, z);
			else
				throw new InvalidOperationException("binding point RasterPos3 cannot be found");
			LogProc("glRasterPos3d({0}, {1}, {2})", x, y, z);
		}

		/// <summary>
		/// Binding for glRasterPos3dv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void RasterPos3(double[] v) {
			unsafe {
				fixed (double* fp_v = v)
				{
					if      (Delegates.pglRasterPos3dv != null)
						Delegates.pglRasterPos3dv(fp_v);
					else
						throw new InvalidOperationException("binding point RasterPos3 cannot be found");
				}
			}
			LogProc("glRasterPos3dv({0})", v);
		}

		/// <summary>
		/// Binding for glRasterPos3f function.
		/// </summary>
		/// <param name="x">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void RasterPos3(float x, float y, float z) {
			if      (Delegates.pglRasterPos3f != null)
				Delegates.pglRasterPos3f(x, y, z);
			else
				throw new InvalidOperationException("binding point RasterPos3 cannot be found");
			LogProc("glRasterPos3f({0}, {1}, {2})", x, y, z);
		}

		/// <summary>
		/// Binding for glRasterPos3fv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void RasterPos3(float[] v) {
			unsafe {
				fixed (float* fp_v = v)
				{
					if      (Delegates.pglRasterPos3fv != null)
						Delegates.pglRasterPos3fv(fp_v);
					else
						throw new InvalidOperationException("binding point RasterPos3 cannot be found");
				}
			}
			LogProc("glRasterPos3fv({0})", v);
		}

		/// <summary>
		/// Binding for glRasterPos3i function.
		/// </summary>
		/// <param name="x">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void RasterPos3(int x, int y, int z) {
			if      (Delegates.pglRasterPos3i != null)
				Delegates.pglRasterPos3i(x, y, z);
			else
				throw new InvalidOperationException("binding point RasterPos3 cannot be found");
			LogProc("glRasterPos3i({0}, {1}, {2})", x, y, z);
		}

		/// <summary>
		/// Binding for glRasterPos3iv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void RasterPos3(int[] v) {
			unsafe {
				fixed (int* fp_v = v)
				{
					if      (Delegates.pglRasterPos3iv != null)
						Delegates.pglRasterPos3iv(fp_v);
					else
						throw new InvalidOperationException("binding point RasterPos3 cannot be found");
				}
			}
			LogProc("glRasterPos3iv({0})", v);
		}

		/// <summary>
		/// Binding for glRasterPos3s function.
		/// </summary>
		/// <param name="x">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void RasterPos3(Int16 x, Int16 y, Int16 z) {
			if      (Delegates.pglRasterPos3s != null)
				Delegates.pglRasterPos3s(x, y, z);
			else
				throw new InvalidOperationException("binding point RasterPos3 cannot be found");
			LogProc("glRasterPos3s({0}, {1}, {2})", x, y, z);
		}

		/// <summary>
		/// Binding for glRasterPos3sv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Int16*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void RasterPos3(Int16[] v) {
			unsafe {
				fixed (Int16* fp_v = v)
				{
					if      (Delegates.pglRasterPos3sv != null)
						Delegates.pglRasterPos3sv(fp_v);
					else
						throw new InvalidOperationException("binding point RasterPos3 cannot be found");
				}
			}
			LogProc("glRasterPos3sv({0})", v);
		}

		/// <summary>
		/// Binding for glRasterPos4d function.
		/// </summary>
		/// <param name="x">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="w">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void RasterPos4(double x, double y, double z, double w) {
			if      (Delegates.pglRasterPos4d != null)
				Delegates.pglRasterPos4d(x, y, z, w);
			else
				throw new InvalidOperationException("binding point RasterPos4 cannot be found");
			LogProc("glRasterPos4d({0}, {1}, {2}, {3})", x, y, z, w);
		}

		/// <summary>
		/// Binding for glRasterPos4dv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void RasterPos4(double[] v) {
			unsafe {
				fixed (double* fp_v = v)
				{
					if      (Delegates.pglRasterPos4dv != null)
						Delegates.pglRasterPos4dv(fp_v);
					else
						throw new InvalidOperationException("binding point RasterPos4 cannot be found");
				}
			}
			LogProc("glRasterPos4dv({0})", v);
		}

		/// <summary>
		/// Binding for glRasterPos4f function.
		/// </summary>
		/// <param name="x">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="w">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void RasterPos4(float x, float y, float z, float w) {
			if      (Delegates.pglRasterPos4f != null)
				Delegates.pglRasterPos4f(x, y, z, w);
			else
				throw new InvalidOperationException("binding point RasterPos4 cannot be found");
			LogProc("glRasterPos4f({0}, {1}, {2}, {3})", x, y, z, w);
		}

		/// <summary>
		/// Binding for glRasterPos4fv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void RasterPos4(float[] v) {
			unsafe {
				fixed (float* fp_v = v)
				{
					if      (Delegates.pglRasterPos4fv != null)
						Delegates.pglRasterPos4fv(fp_v);
					else
						throw new InvalidOperationException("binding point RasterPos4 cannot be found");
				}
			}
			LogProc("glRasterPos4fv({0})", v);
		}

		/// <summary>
		/// Binding for glRasterPos4i function.
		/// </summary>
		/// <param name="x">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="w">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void RasterPos4(int x, int y, int z, int w) {
			if      (Delegates.pglRasterPos4i != null)
				Delegates.pglRasterPos4i(x, y, z, w);
			else
				throw new InvalidOperationException("binding point RasterPos4 cannot be found");
			LogProc("glRasterPos4i({0}, {1}, {2}, {3})", x, y, z, w);
		}

		/// <summary>
		/// Binding for glRasterPos4iv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void RasterPos4(int[] v) {
			unsafe {
				fixed (int* fp_v = v)
				{
					if      (Delegates.pglRasterPos4iv != null)
						Delegates.pglRasterPos4iv(fp_v);
					else
						throw new InvalidOperationException("binding point RasterPos4 cannot be found");
				}
			}
			LogProc("glRasterPos4iv({0})", v);
		}

		/// <summary>
		/// Binding for glRasterPos4s function.
		/// </summary>
		/// <param name="x">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// <param name="w">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void RasterPos4(Int16 x, Int16 y, Int16 z, Int16 w) {
			if      (Delegates.pglRasterPos4s != null)
				Delegates.pglRasterPos4s(x, y, z, w);
			else
				throw new InvalidOperationException("binding point RasterPos4 cannot be found");
			LogProc("glRasterPos4s({0}, {1}, {2}, {3})", x, y, z, w);
		}

		/// <summary>
		/// Binding for glRasterPos4sv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Int16*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void RasterPos4(Int16[] v) {
			unsafe {
				fixed (Int16* fp_v = v)
				{
					if      (Delegates.pglRasterPos4sv != null)
						Delegates.pglRasterPos4sv(fp_v);
					else
						throw new InvalidOperationException("binding point RasterPos4 cannot be found");
				}
			}
			LogProc("glRasterPos4sv({0})", v);
		}

		/// <summary>
		/// Binding for glReadBuffer function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void ReadBuffer(int mode) {
			if      (Delegates.pglReadBuffer != null)
				Delegates.pglReadBuffer(mode);
			else
				throw new InvalidOperationException("binding point ReadBuffer cannot be found");
			LogProc("glReadBuffer({0})", mode);
		}

		/// <summary>
		/// Binding for glReadPixels function.
		/// </summary>
		/// <param name="x">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="format">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pixels">
		/// A <see cref="T:System.IntPtr"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void ReadPixels(int x, int y, Int32 width, Int32 height, int format, int type, [Out] object pixels) {
			GCHandle pp_pixels = GCHandle.Alloc(pixels, GCHandleType.Pinned);
			try {
				if      (Delegates.pglReadPixels != null)
					Delegates.pglReadPixels(x, y, width, height, format, type, pp_pixels.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point ReadPixels cannot be found");
			} finally {
				pp_pixels.Free();
			}
			LogProc("glReadPixels({0}, {1}, {2}, {3}, {4}, {5}, {6})", x, y, width, height, format, type, pixels);
		}

		/// <summary>
		/// Binding for glRectd function.
		/// </summary>
		/// <param name="x1">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="y1">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="x2">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="y2">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Rect(double x1, double y1, double x2, double y2) {
			if      (Delegates.pglRectd != null)
				Delegates.pglRectd(x1, y1, x2, y2);
			else
				throw new InvalidOperationException("binding point Rect cannot be found");
			LogProc("glRectd({0}, {1}, {2}, {3})", x1, y1, x2, y2);
		}

		/// <summary>
		/// Binding for glRectdv function.
		/// </summary>
		/// <param name="v1">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// <param name="v2">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Rect(double[] v1, double[] v2) {
			unsafe {
				fixed (double* fp_v1 = v1)
				fixed (double* fp_v2 = v2)
				{
					if      (Delegates.pglRectdv != null)
						Delegates.pglRectdv(fp_v1, fp_v2);
					else
						throw new InvalidOperationException("binding point Rect cannot be found");
				}
			}
			LogProc("glRectdv({0}, {1})", v1, v2);
		}

		/// <summary>
		/// Binding for glRectf function.
		/// </summary>
		/// <param name="x1">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="y1">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="x2">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="y2">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Rect(float x1, float y1, float x2, float y2) {
			if      (Delegates.pglRectf != null)
				Delegates.pglRectf(x1, y1, x2, y2);
			else
				throw new InvalidOperationException("binding point Rect cannot be found");
			LogProc("glRectf({0}, {1}, {2}, {3})", x1, y1, x2, y2);
		}

		/// <summary>
		/// Binding for glRectfv function.
		/// </summary>
		/// <param name="v1">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// <param name="v2">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Rect(float[] v1, float[] v2) {
			unsafe {
				fixed (float* fp_v1 = v1)
				fixed (float* fp_v2 = v2)
				{
					if      (Delegates.pglRectfv != null)
						Delegates.pglRectfv(fp_v1, fp_v2);
					else
						throw new InvalidOperationException("binding point Rect cannot be found");
				}
			}
			LogProc("glRectfv({0}, {1})", v1, v2);
		}

		/// <summary>
		/// Binding for glRecti function.
		/// </summary>
		/// <param name="x1">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="y1">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="x2">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="y2">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Rect(int x1, int y1, int x2, int y2) {
			if      (Delegates.pglRecti != null)
				Delegates.pglRecti(x1, y1, x2, y2);
			else
				throw new InvalidOperationException("binding point Rect cannot be found");
			LogProc("glRecti({0}, {1}, {2}, {3})", x1, y1, x2, y2);
		}

		/// <summary>
		/// Binding for glRectiv function.
		/// </summary>
		/// <param name="v1">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// <param name="v2">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Rect(int[] v1, int[] v2) {
			unsafe {
				fixed (int* fp_v1 = v1)
				fixed (int* fp_v2 = v2)
				{
					if      (Delegates.pglRectiv != null)
						Delegates.pglRectiv(fp_v1, fp_v2);
					else
						throw new InvalidOperationException("binding point Rect cannot be found");
				}
			}
			LogProc("glRectiv({0}, {1})", v1, v2);
		}

		/// <summary>
		/// Binding for glRects function.
		/// </summary>
		/// <param name="x1">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// <param name="y1">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// <param name="x2">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// <param name="y2">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Rect(Int16 x1, Int16 y1, Int16 x2, Int16 y2) {
			if      (Delegates.pglRects != null)
				Delegates.pglRects(x1, y1, x2, y2);
			else
				throw new InvalidOperationException("binding point Rect cannot be found");
			LogProc("glRects({0}, {1}, {2}, {3})", x1, y1, x2, y2);
		}

		/// <summary>
		/// Binding for glRectsv function.
		/// </summary>
		/// <param name="v1">
		/// A <see cref="T:System.Int16*"/>.
		/// </param>
		/// <param name="v2">
		/// A <see cref="T:System.Int16*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Rect(Int16[] v1, Int16[] v2) {
			unsafe {
				fixed (Int16* fp_v1 = v1)
				fixed (Int16* fp_v2 = v2)
				{
					if      (Delegates.pglRectsv != null)
						Delegates.pglRectsv(fp_v1, fp_v2);
					else
						throw new InvalidOperationException("binding point Rect cannot be found");
				}
			}
			LogProc("glRectsv({0}, {1})", v1, v2);
		}

		/// <summary>
		/// Binding for glReleaseShaderCompiler function.
		/// </summary>
		/// @note This routine is available from OpenGL 4.1
		public static void ReleaseShaderCompiler() {
			if      (Delegates.pglReleaseShaderCompiler != null)
				Delegates.pglReleaseShaderCompiler();
			else
				throw new InvalidOperationException("binding point ReleaseShaderCompiler cannot be found");
			LogProc("glReleaseShaderCompiler()");
		}

		/// <summary>
		/// Binding for glRenderbufferStorage function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="internalformat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void RenderbufferStorage(int target, int internalformat, Int32 width, Int32 height) {
			if      (Delegates.pglRenderbufferStorage != null)
				Delegates.pglRenderbufferStorage(target, internalformat, width, height);
			else
				throw new InvalidOperationException("binding point RenderbufferStorage cannot be found");
			LogProc("glRenderbufferStorage({0}, {1}, {2}, {3})", target, internalformat, width, height);
		}

		/// <summary>
		/// Binding for glRenderbufferStorageMultisample function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="samples">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="internalformat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void RenderbufferStorageMultisample(int target, Int32 samples, int internalformat, Int32 width, Int32 height) {
			if      (Delegates.pglRenderbufferStorageMultisample != null)
				Delegates.pglRenderbufferStorageMultisample(target, samples, internalformat, width, height);
			else
				throw new InvalidOperationException("binding point RenderbufferStorageMultisample cannot be found");
			LogProc("glRenderbufferStorageMultisample({0}, {1}, {2}, {3}, {4})", target, samples, internalformat, width, height);
		}

		/// <summary>
		/// Binding for glRenderMode function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static int RenderMode(int mode) {
			int retvalue;
			if      (Delegates.pglRenderMode != null)
				retvalue = (Delegates.pglRenderMode(mode));
			else
				throw new InvalidOperationException("binding point RenderMode cannot be found");
			LogProc("glRenderMode({0}) = {1}", mode, retvalue);
			return (retvalue);
		}

		/// <summary>
		/// Binding for glResetHistogram function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		/// @deprecated
		public static void ResetHistogram(int target) {
			if      (Delegates.pglResetHistogram != null)
				Delegates.pglResetHistogram(target);
			else
				throw new InvalidOperationException("binding point ResetHistogram cannot be found");
			LogProc("glResetHistogram({0})", target);
		}

		/// <summary>
		/// Binding for glResetMinmax function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		/// @deprecated
		public static void ResetMinmax(int target) {
			if      (Delegates.pglResetMinmax != null)
				Delegates.pglResetMinmax(target);
			else
				throw new InvalidOperationException("binding point ResetMinmax cannot be found");
			LogProc("glResetMinmax({0})", target);
		}

		/// <summary>
		/// Binding for glResumeTransformFeedback function.
		/// </summary>
		/// @note This routine is available from OpenGL 1.2
		public static void ResumeTransformFeedback() {
			if      (Delegates.pglResumeTransformFeedback != null)
				Delegates.pglResumeTransformFeedback();
			else
				throw new InvalidOperationException("binding point ResumeTransformFeedback cannot be found");
			LogProc("glResumeTransformFeedback()");
		}

		/// <summary>
		/// Binding for glRotated function.
		/// </summary>
		/// <param name="angle">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Rotate(double angle, double x, double y, double z) {
			if      (Delegates.pglRotated != null)
				Delegates.pglRotated(angle, x, y, z);
			else
				throw new InvalidOperationException("binding point Rotate cannot be found");
			LogProc("glRotated({0}, {1}, {2}, {3})", angle, x, y, z);
		}

		/// <summary>
		/// Binding for glRotatef function.
		/// </summary>
		/// <param name="angle">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Rotate(float angle, float x, float y, float z) {
			if      (Delegates.pglRotatef != null)
				Delegates.pglRotatef(angle, x, y, z);
			else
				throw new InvalidOperationException("binding point Rotate cannot be found");
			LogProc("glRotatef({0}, {1}, {2}, {3})", angle, x, y, z);
		}

		/// <summary>
		/// Binding for glSampleCoverage function.
		/// </summary>
		/// <param name="value">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="invert">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void SampleCoverage(float value, bool invert) {
			if      (Delegates.pglSampleCoverage != null)
				Delegates.pglSampleCoverage(value, invert);
			else
				throw new InvalidOperationException("binding point SampleCoverage cannot be found");
			LogProc("glSampleCoverage({0}, {1})", value, invert);
		}

		/// <summary>
		/// Binding for glSampleMaski function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="mask">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void SampleMask(UInt32 index, uint mask) {
			if      (Delegates.pglSampleMaski != null)
				Delegates.pglSampleMaski(index, mask);
			else
				throw new InvalidOperationException("binding point SampleMask cannot be found");
			LogProc("glSampleMaski({0}, {1})", index, mask);
		}

		/// <summary>
		/// Binding for glSamplerParameterf function.
		/// </summary>
		/// <param name="sampler">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="param">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void SamplerParameter(UInt32 sampler, int pname, float param) {
			if      (Delegates.pglSamplerParameterf != null)
				Delegates.pglSamplerParameterf(sampler, pname, param);
			else
				throw new InvalidOperationException("binding point SamplerParameter cannot be found");
			LogProc("glSamplerParameterf({0}, {1}, {2})", sampler, pname, param);
		}

		/// <summary>
		/// Binding for glSamplerParameterfv function.
		/// </summary>
		/// <param name="sampler">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="param">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void SamplerParameter(UInt32 sampler, int pname, float[] param) {
			unsafe {
				fixed (float* fp_param = param)
				{
					if      (Delegates.pglSamplerParameterfv != null)
						Delegates.pglSamplerParameterfv(sampler, pname, fp_param);
					else
						throw new InvalidOperationException("binding point SamplerParameter cannot be found");
				}
			}
			LogProc("glSamplerParameterfv({0}, {1}, {2})", sampler, pname, param);
		}

		/// <summary>
		/// Binding for glSamplerParameterfv function.
		/// </summary>
		/// <param name="sampler">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="param">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void SamplerParameter(UInt32 sampler, int pname, float* param) {
			unsafe {
				if      (Delegates.pglSamplerParameterfv != null)
					Delegates.pglSamplerParameterfv(sampler, pname, param);
				else
					throw new InvalidOperationException("binding point SamplerParameter cannot be found");
			}
			LogProc("glSamplerParameterfv({0}, {1}, {2})", sampler, pname, "param");
		}
		

		/// <summary>
		/// Binding for glSamplerParameteri function.
		/// </summary>
		/// <param name="sampler">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="param">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void SamplerParameter(UInt32 sampler, int pname, int param) {
			if      (Delegates.pglSamplerParameteri != null)
				Delegates.pglSamplerParameteri(sampler, pname, param);
			else
				throw new InvalidOperationException("binding point SamplerParameter cannot be found");
			LogProc("glSamplerParameteri({0}, {1}, {2})", sampler, pname, param);
		}

		/// <summary>
		/// Binding for glSamplerParameterIiv function.
		/// </summary>
		/// <param name="sampler">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="param">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void SamplerParameterI(UInt32 sampler, int pname, int[] param) {
			unsafe {
				fixed (int* fp_param = param)
				{
					if      (Delegates.pglSamplerParameterIiv != null)
						Delegates.pglSamplerParameterIiv(sampler, pname, fp_param);
					else
						throw new InvalidOperationException("binding point SamplerParameterI cannot be found");
				}
			}
			LogProc("glSamplerParameterIiv({0}, {1}, {2})", sampler, pname, param);
		}

		/// <summary>
		/// Binding for glSamplerParameterIiv function.
		/// </summary>
		/// <param name="sampler">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="param">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void SamplerParameterI(UInt32 sampler, int pname, int* param) {
			unsafe {
				if      (Delegates.pglSamplerParameterIiv != null)
					Delegates.pglSamplerParameterIiv(sampler, pname, param);
				else
					throw new InvalidOperationException("binding point SamplerParameterI cannot be found");
			}
			LogProc("glSamplerParameterIiv({0}, {1}, {2})", sampler, pname, "param");
		}
		

		/// <summary>
		/// Binding for glSamplerParameterIuiv function.
		/// </summary>
		/// <param name="sampler">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="param">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void SamplerParameterI(UInt32 sampler, int pname, UInt32[] param) {
			unsafe {
				fixed (UInt32* fp_param = param)
				{
					if      (Delegates.pglSamplerParameterIuiv != null)
						Delegates.pglSamplerParameterIuiv(sampler, pname, fp_param);
					else
						throw new InvalidOperationException("binding point SamplerParameterI cannot be found");
				}
			}
			LogProc("glSamplerParameterIuiv({0}, {1}, {2})", sampler, pname, param);
		}

		/// <summary>
		/// Binding for glSamplerParameterIuiv function.
		/// </summary>
		/// <param name="sampler">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="param">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void SamplerParameterI(UInt32 sampler, int pname, UInt32* param) {
			unsafe {
				if      (Delegates.pglSamplerParameterIuiv != null)
					Delegates.pglSamplerParameterIuiv(sampler, pname, param);
				else
					throw new InvalidOperationException("binding point SamplerParameterI cannot be found");
			}
			LogProc("glSamplerParameterIuiv({0}, {1}, {2})", sampler, pname, "param");
		}
		

		/// <summary>
		/// Binding for glSamplerParameteriv function.
		/// </summary>
		/// <param name="sampler">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="param">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void SamplerParameter(UInt32 sampler, int pname, int[] param) {
			unsafe {
				fixed (int* fp_param = param)
				{
					if      (Delegates.pglSamplerParameteriv != null)
						Delegates.pglSamplerParameteriv(sampler, pname, fp_param);
					else
						throw new InvalidOperationException("binding point SamplerParameter cannot be found");
				}
			}
			LogProc("glSamplerParameteriv({0}, {1}, {2})", sampler, pname, param);
		}

		/// <summary>
		/// Binding for glSamplerParameteriv function.
		/// </summary>
		/// <param name="sampler">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="param">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void SamplerParameter(UInt32 sampler, int pname, int* param) {
			unsafe {
				if      (Delegates.pglSamplerParameteriv != null)
					Delegates.pglSamplerParameteriv(sampler, pname, param);
				else
					throw new InvalidOperationException("binding point SamplerParameter cannot be found");
			}
			LogProc("glSamplerParameteriv({0}, {1}, {2})", sampler, pname, "param");
		}
		

		/// <summary>
		/// Binding for glScaled function.
		/// </summary>
		/// <param name="x">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Scale(double x, double y, double z) {
			if      (Delegates.pglScaled != null)
				Delegates.pglScaled(x, y, z);
			else
				throw new InvalidOperationException("binding point Scale cannot be found");
			LogProc("glScaled({0}, {1}, {2})", x, y, z);
		}

		/// <summary>
		/// Binding for glScalef function.
		/// </summary>
		/// <param name="x">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Scale(float x, float y, float z) {
			if      (Delegates.pglScalef != null)
				Delegates.pglScalef(x, y, z);
			else
				throw new InvalidOperationException("binding point Scale cannot be found");
			LogProc("glScalef({0}, {1}, {2})", x, y, z);
		}

		/// <summary>
		/// Binding for glScissor function.
		/// </summary>
		/// <param name="x">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void Scissor(int x, int y, Int32 width, Int32 height) {
			if      (Delegates.pglScissor != null)
				Delegates.pglScissor(x, y, width, height);
			else
				throw new InvalidOperationException("binding point Scissor cannot be found");
			LogProc("glScissor({0}, {1}, {2}, {3})", x, y, width, height);
		}

		/// <summary>
		/// Binding for glScissorArrayv function.
		/// </summary>
		/// <param name="first">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ScissorArray(UInt32 first, Int32 count, int[] v) {
			unsafe {
				fixed (int* fp_v = v)
				{
					if      (Delegates.pglScissorArrayv != null)
						Delegates.pglScissorArrayv(first, count, fp_v);
					else
						throw new InvalidOperationException("binding point ScissorArray cannot be found");
				}
			}
			LogProc("glScissorArrayv({0}, {1}, {2})", first, count, v);
		}

		/// <summary>
		/// Binding for glScissorArrayv function.
		/// </summary>
		/// <param name="first">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ScissorArray(UInt32 first, Int32 count, int* v) {
			unsafe {
				if      (Delegates.pglScissorArrayv != null)
					Delegates.pglScissorArrayv(first, count, v);
				else
					throw new InvalidOperationException("binding point ScissorArray cannot be found");
			}
			LogProc("glScissorArrayv({0}, {1}, {2})", first, count, "v");
		}
		

		/// <summary>
		/// Binding for glScissorIndexed function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="left">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="bottom">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ScissorIndexed(UInt32 index, int left, int bottom, Int32 width, Int32 height) {
			if      (Delegates.pglScissorIndexed != null)
				Delegates.pglScissorIndexed(index, left, bottom, width, height);
			else
				throw new InvalidOperationException("binding point ScissorIndexed cannot be found");
			LogProc("glScissorIndexed({0}, {1}, {2}, {3}, {4})", index, left, bottom, width, height);
		}

		/// <summary>
		/// Binding for glScissorIndexedv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ScissorIndexed(UInt32 index, int[] v) {
			unsafe {
				fixed (int* fp_v = v)
				{
					if      (Delegates.pglScissorIndexedv != null)
						Delegates.pglScissorIndexedv(index, fp_v);
					else
						throw new InvalidOperationException("binding point ScissorIndexed cannot be found");
				}
			}
			LogProc("glScissorIndexedv({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glScissorIndexedv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ScissorIndexed(UInt32 index, int* v) {
			unsafe {
				if      (Delegates.pglScissorIndexedv != null)
					Delegates.pglScissorIndexedv(index, v);
				else
					throw new InvalidOperationException("binding point ScissorIndexed cannot be found");
			}
			LogProc("glScissorIndexedv({0}, {1})", index, "v");
		}
		

		/// <summary>
		/// Binding for glSecondaryColor3b function.
		/// </summary>
		/// <param name="red">
		/// A <see cref="T:System.SByte"/>.
		/// </param>
		/// <param name="green">
		/// A <see cref="T:System.SByte"/>.
		/// </param>
		/// <param name="blue">
		/// A <see cref="T:System.SByte"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.4
		/// @deprecated
		public static void SecondaryColor3(sbyte red, sbyte green, sbyte blue) {
			if      (Delegates.pglSecondaryColor3b != null)
				Delegates.pglSecondaryColor3b(red, green, blue);
			else
				throw new InvalidOperationException("binding point SecondaryColor3 cannot be found");
			LogProc("glSecondaryColor3b({0}, {1}, {2})", red, green, blue);
		}

		/// <summary>
		/// Binding for glSecondaryColor3bv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.SByte*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.4
		/// @deprecated
		public static void SecondaryColor3(sbyte[] v) {
			unsafe {
				fixed (sbyte* fp_v = v)
				{
					if      (Delegates.pglSecondaryColor3bv != null)
						Delegates.pglSecondaryColor3bv(fp_v);
					else
						throw new InvalidOperationException("binding point SecondaryColor3 cannot be found");
				}
			}
			LogProc("glSecondaryColor3bv({0})", v);
		}

		/// <summary>
		/// Binding for glSecondaryColor3d function.
		/// </summary>
		/// <param name="red">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="green">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="blue">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.4
		/// @deprecated
		public static void SecondaryColor3(double red, double green, double blue) {
			if      (Delegates.pglSecondaryColor3d != null)
				Delegates.pglSecondaryColor3d(red, green, blue);
			else
				throw new InvalidOperationException("binding point SecondaryColor3 cannot be found");
			LogProc("glSecondaryColor3d({0}, {1}, {2})", red, green, blue);
		}

		/// <summary>
		/// Binding for glSecondaryColor3dv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.4
		/// @deprecated
		public static void SecondaryColor3(double[] v) {
			unsafe {
				fixed (double* fp_v = v)
				{
					if      (Delegates.pglSecondaryColor3dv != null)
						Delegates.pglSecondaryColor3dv(fp_v);
					else
						throw new InvalidOperationException("binding point SecondaryColor3 cannot be found");
				}
			}
			LogProc("glSecondaryColor3dv({0})", v);
		}

		/// <summary>
		/// Binding for glSecondaryColor3f function.
		/// </summary>
		/// <param name="red">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="green">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="blue">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.4
		/// @deprecated
		public static void SecondaryColor3(float red, float green, float blue) {
			if      (Delegates.pglSecondaryColor3f != null)
				Delegates.pglSecondaryColor3f(red, green, blue);
			else
				throw new InvalidOperationException("binding point SecondaryColor3 cannot be found");
			LogProc("glSecondaryColor3f({0}, {1}, {2})", red, green, blue);
		}

		/// <summary>
		/// Binding for glSecondaryColor3fv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.4
		/// @deprecated
		public static void SecondaryColor3(float[] v) {
			unsafe {
				fixed (float* fp_v = v)
				{
					if      (Delegates.pglSecondaryColor3fv != null)
						Delegates.pglSecondaryColor3fv(fp_v);
					else
						throw new InvalidOperationException("binding point SecondaryColor3 cannot be found");
				}
			}
			LogProc("glSecondaryColor3fv({0})", v);
		}

		/// <summary>
		/// Binding for glSecondaryColor3i function.
		/// </summary>
		/// <param name="red">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="green">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="blue">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.4
		/// @deprecated
		public static void SecondaryColor3(int red, int green, int blue) {
			if      (Delegates.pglSecondaryColor3i != null)
				Delegates.pglSecondaryColor3i(red, green, blue);
			else
				throw new InvalidOperationException("binding point SecondaryColor3 cannot be found");
			LogProc("glSecondaryColor3i({0}, {1}, {2})", red, green, blue);
		}

		/// <summary>
		/// Binding for glSecondaryColor3iv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.4
		/// @deprecated
		public static void SecondaryColor3(int[] v) {
			unsafe {
				fixed (int* fp_v = v)
				{
					if      (Delegates.pglSecondaryColor3iv != null)
						Delegates.pglSecondaryColor3iv(fp_v);
					else
						throw new InvalidOperationException("binding point SecondaryColor3 cannot be found");
				}
			}
			LogProc("glSecondaryColor3iv({0})", v);
		}

		/// <summary>
		/// Binding for glSecondaryColor3s function.
		/// </summary>
		/// <param name="red">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// <param name="green">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// <param name="blue">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.4
		/// @deprecated
		public static void SecondaryColor3(Int16 red, Int16 green, Int16 blue) {
			if      (Delegates.pglSecondaryColor3s != null)
				Delegates.pglSecondaryColor3s(red, green, blue);
			else
				throw new InvalidOperationException("binding point SecondaryColor3 cannot be found");
			LogProc("glSecondaryColor3s({0}, {1}, {2})", red, green, blue);
		}

		/// <summary>
		/// Binding for glSecondaryColor3sv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Int16*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.4
		/// @deprecated
		public static void SecondaryColor3(Int16[] v) {
			unsafe {
				fixed (Int16* fp_v = v)
				{
					if      (Delegates.pglSecondaryColor3sv != null)
						Delegates.pglSecondaryColor3sv(fp_v);
					else
						throw new InvalidOperationException("binding point SecondaryColor3 cannot be found");
				}
			}
			LogProc("glSecondaryColor3sv({0})", v);
		}

		/// <summary>
		/// Binding for glSecondaryColor3ub function.
		/// </summary>
		/// <param name="red">
		/// A <see cref="T:System.Byte"/>.
		/// </param>
		/// <param name="green">
		/// A <see cref="T:System.Byte"/>.
		/// </param>
		/// <param name="blue">
		/// A <see cref="T:System.Byte"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.4
		/// @deprecated
		public static void SecondaryColor3(byte red, byte green, byte blue) {
			if      (Delegates.pglSecondaryColor3ub != null)
				Delegates.pglSecondaryColor3ub(red, green, blue);
			else
				throw new InvalidOperationException("binding point SecondaryColor3 cannot be found");
			LogProc("glSecondaryColor3ub({0}, {1}, {2})", red, green, blue);
		}

		/// <summary>
		/// Binding for glSecondaryColor3ubv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Byte*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.4
		/// @deprecated
		public static void SecondaryColor3(byte[] v) {
			unsafe {
				fixed (byte* fp_v = v)
				{
					if      (Delegates.pglSecondaryColor3ubv != null)
						Delegates.pglSecondaryColor3ubv(fp_v);
					else
						throw new InvalidOperationException("binding point SecondaryColor3 cannot be found");
				}
			}
			LogProc("glSecondaryColor3ubv({0})", v);
		}

		/// <summary>
		/// Binding for glSecondaryColor3ui function.
		/// </summary>
		/// <param name="red">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="green">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="blue">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.4
		/// @deprecated
		public static void SecondaryColor3(UInt32 red, UInt32 green, UInt32 blue) {
			if      (Delegates.pglSecondaryColor3ui != null)
				Delegates.pglSecondaryColor3ui(red, green, blue);
			else
				throw new InvalidOperationException("binding point SecondaryColor3 cannot be found");
			LogProc("glSecondaryColor3ui({0}, {1}, {2})", red, green, blue);
		}

		/// <summary>
		/// Binding for glSecondaryColor3uiv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.4
		/// @deprecated
		public static void SecondaryColor3(UInt32[] v) {
			unsafe {
				fixed (UInt32* fp_v = v)
				{
					if      (Delegates.pglSecondaryColor3uiv != null)
						Delegates.pglSecondaryColor3uiv(fp_v);
					else
						throw new InvalidOperationException("binding point SecondaryColor3 cannot be found");
				}
			}
			LogProc("glSecondaryColor3uiv({0})", v);
		}

		/// <summary>
		/// Binding for glSecondaryColor3us function.
		/// </summary>
		/// <param name="red">
		/// A <see cref="T:System.UInt16"/>.
		/// </param>
		/// <param name="green">
		/// A <see cref="T:System.UInt16"/>.
		/// </param>
		/// <param name="blue">
		/// A <see cref="T:System.UInt16"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.4
		/// @deprecated
		public static void SecondaryColor3(UInt16 red, UInt16 green, UInt16 blue) {
			if      (Delegates.pglSecondaryColor3us != null)
				Delegates.pglSecondaryColor3us(red, green, blue);
			else
				throw new InvalidOperationException("binding point SecondaryColor3 cannot be found");
			LogProc("glSecondaryColor3us({0}, {1}, {2})", red, green, blue);
		}

		/// <summary>
		/// Binding for glSecondaryColor3usv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.UInt16*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.4
		/// @deprecated
		public static void SecondaryColor3(UInt16[] v) {
			unsafe {
				fixed (UInt16* fp_v = v)
				{
					if      (Delegates.pglSecondaryColor3usv != null)
						Delegates.pglSecondaryColor3usv(fp_v);
					else
						throw new InvalidOperationException("binding point SecondaryColor3 cannot be found");
				}
			}
			LogProc("glSecondaryColor3usv({0})", v);
		}

		/// <summary>
		/// Binding for glSecondaryColorP3ui function.
		/// </summary>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="color">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void SecondaryColorP3(int type, UInt32 color) {
			if      (Delegates.pglSecondaryColorP3ui != null)
				Delegates.pglSecondaryColorP3ui(type, color);
			else
				throw new InvalidOperationException("binding point SecondaryColorP3 cannot be found");
			LogProc("glSecondaryColorP3ui({0}, {1})", type, color);
		}

		/// <summary>
		/// Binding for glSecondaryColorP3uiv function.
		/// </summary>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="color">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void SecondaryColorP3(int type, UInt32[] color) {
			unsafe {
				fixed (UInt32* fp_color = color)
				{
					if      (Delegates.pglSecondaryColorP3uiv != null)
						Delegates.pglSecondaryColorP3uiv(type, fp_color);
					else
						throw new InvalidOperationException("binding point SecondaryColorP3 cannot be found");
				}
			}
			LogProc("glSecondaryColorP3uiv({0}, {1})", type, color);
		}

		/// <summary>
		/// Binding for glSecondaryColorP3uiv function.
		/// </summary>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="color">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void SecondaryColorP3(int type, UInt32* color) {
			unsafe {
				if      (Delegates.pglSecondaryColorP3uiv != null)
					Delegates.pglSecondaryColorP3uiv(type, color);
				else
					throw new InvalidOperationException("binding point SecondaryColorP3 cannot be found");
			}
			LogProc("glSecondaryColorP3uiv({0}, {1})", type, "color");
		}
		

		/// <summary>
		/// Binding for glSecondaryColorPointer function.
		/// </summary>
		/// <param name="size">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="stride">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pointer">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.4
		/// @deprecated
		public static void SecondaryColorPointer(int size, int type, Int32 stride, object pointer) {
			GCHandle pp_pointer = GCHandle.Alloc(pointer, GCHandleType.Pinned);
			try {
				if      (Delegates.pglSecondaryColorPointer != null)
					Delegates.pglSecondaryColorPointer(size, type, stride, pp_pointer.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point SecondaryColorPointer cannot be found");
			} finally {
				pp_pointer.Free();
			}
			LogProc("glSecondaryColorPointer({0}, {1}, {2}, {3})", size, type, stride, pointer);
		}

		/// <summary>
		/// Binding for glSelectBuffer function.
		/// </summary>
		/// <param name="size">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="buffer">
		/// A <see cref="T:System.UInt32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void SelectBuffer(Int32 size, [Out] UInt32[] buffer) {
			unsafe {
				fixed (UInt32* fp_buffer = buffer)
				{
					if      (Delegates.pglSelectBuffer != null)
						Delegates.pglSelectBuffer(size, fp_buffer);
					else
						throw new InvalidOperationException("binding point SelectBuffer cannot be found");
				}
			}
			LogProc("glSelectBuffer({0}, {1})", size, buffer);
		}

		/// <summary>
		/// Binding for glSeparableFilter2D function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="internalformat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="format">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="row">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// <param name="column">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		/// @deprecated
		public static void SeparableFilter2D(int target, int internalformat, Int32 width, Int32 height, int format, int type, object row, object column) {
			GCHandle pp_row = GCHandle.Alloc(row, GCHandleType.Pinned);
			GCHandle pp_column = GCHandle.Alloc(column, GCHandleType.Pinned);
			try {
				if      (Delegates.pglSeparableFilter2D != null)
					Delegates.pglSeparableFilter2D(target, internalformat, width, height, format, type, pp_row.AddrOfPinnedObject(), pp_column.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point SeparableFilter2D cannot be found");
			} finally {
				pp_row.Free();
				pp_column.Free();
			}
			LogProc("glSeparableFilter2D({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7})", target, internalformat, width, height, format, type, row, column);
		}

		/// <summary>
		/// Binding for glShadeModel function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void ShadeModel(int mode) {
			if      (Delegates.pglShadeModel != null)
				Delegates.pglShadeModel(mode);
			else
				throw new InvalidOperationException("binding point ShadeModel cannot be found");
			LogProc("glShadeModel({0})", mode);
		}

		/// <summary>
		/// Binding for glShaderBinary function.
		/// </summary>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="shaders">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// <param name="binaryformat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="binary">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// <param name="length">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ShaderBinary(Int32 count, UInt32[] shaders, int binaryformat, object binary, Int32 length) {
			unsafe {
				GCHandle pp_binary = GCHandle.Alloc(binary, GCHandleType.Pinned);
				try {
					fixed (UInt32* fp_shaders = shaders)
					{
						if      (Delegates.pglShaderBinary != null)
							Delegates.pglShaderBinary(count, fp_shaders, binaryformat, pp_binary.AddrOfPinnedObject(), length);
						else
							throw new InvalidOperationException("binding point ShaderBinary cannot be found");
					}
				} finally {
					pp_binary.Free();
				}
			}
			LogProc("glShaderBinary({0}, {1}, {2}, {3}, {4})", count, shaders, binaryformat, binary, length);
		}

		/// <summary>
		/// Binding for glShaderBinary function.
		/// </summary>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="shaders">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="binaryformat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="binary">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// <param name="length">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ShaderBinary(Int32 count, UInt32* shaders, int binaryformat, object binary, Int32 length) {
			unsafe {
				GCHandle pp_binary = GCHandle.Alloc(binary, GCHandleType.Pinned);
				try {
					if      (Delegates.pglShaderBinary != null)
						Delegates.pglShaderBinary(count, shaders, binaryformat, pp_binary.AddrOfPinnedObject(), length);
					else
						throw new InvalidOperationException("binding point ShaderBinary cannot be found");
				} finally {
					pp_binary.Free();
				}
			}
			LogProc("glShaderBinary({0}, {1}, {2}, {3}, {4})", count, "shaders", binaryformat, binary, length);
		}
		

		/// <summary>
		/// Binding for glShaderSource function.
		/// </summary>
		/// <param name="shader">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="string">
		/// A <see cref="T:System.String[]"/>.
		/// </param>
		/// <param name="length">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void ShaderSource(UInt32 shader, Int32 count, string[] @string, int[] length) {
			unsafe {
				fixed (int* fp_length = length)
				{
					if      (Delegates.pglShaderSource != null)
						Delegates.pglShaderSource(shader, count, @string, fp_length);
					else
						throw new InvalidOperationException("binding point ShaderSource cannot be found");
				}
			}
			LogProc("glShaderSource({0}, {1}, {2}, {3})", shader, count, @string, length);
		}

		/// <summary>
		/// Binding for glShaderSource function.
		/// </summary>
		/// <param name="shader">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="string">
		/// A <see cref="T:System.String[]"/>.
		/// </param>
		/// <param name="length">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void ShaderSource(UInt32 shader, Int32 count, string[] @string, int* length) {
			unsafe {
				if      (Delegates.pglShaderSource != null)
					Delegates.pglShaderSource(shader, count, @string, length);
				else
					throw new InvalidOperationException("binding point ShaderSource cannot be found");
			}
			LogProc("glShaderSource({0}, {1}, {2}, {3})", shader, count, @string, "length");
		}
		

		/// <summary>
		/// Binding for glStencilFunc function.
		/// </summary>
		/// <param name="func">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="ref">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="mask">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void StencilFunc(int func, int @ref, UInt32 mask) {
			if      (Delegates.pglStencilFunc != null)
				Delegates.pglStencilFunc(func, @ref, mask);
			else
				throw new InvalidOperationException("binding point StencilFunc cannot be found");
			LogProc("glStencilFunc({0}, {1}, {2})", func, @ref, mask);
		}

		/// <summary>
		/// Binding for glStencilFuncSeparate function.
		/// </summary>
		/// <param name="face">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="func">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="ref">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="mask">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void StencilFuncSeparate(int face, int func, int @ref, UInt32 mask) {
			if      (Delegates.pglStencilFuncSeparate != null)
				Delegates.pglStencilFuncSeparate(face, func, @ref, mask);
			else
				throw new InvalidOperationException("binding point StencilFuncSeparate cannot be found");
			LogProc("glStencilFuncSeparate({0}, {1}, {2}, {3})", face, func, @ref, mask);
		}

		/// <summary>
		/// Binding for glStencilMask function.
		/// </summary>
		/// <param name="mask">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void StencilMask(UInt32 mask) {
			if      (Delegates.pglStencilMask != null)
				Delegates.pglStencilMask(mask);
			else
				throw new InvalidOperationException("binding point StencilMask cannot be found");
			LogProc("glStencilMask({0})", mask);
		}

		/// <summary>
		/// Binding for glStencilMaskSeparate function.
		/// </summary>
		/// <param name="face">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="mask">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void StencilMaskSeparate(int face, UInt32 mask) {
			if      (Delegates.pglStencilMaskSeparate != null)
				Delegates.pglStencilMaskSeparate(face, mask);
			else
				throw new InvalidOperationException("binding point StencilMaskSeparate cannot be found");
			LogProc("glStencilMaskSeparate({0}, {1})", face, mask);
		}

		/// <summary>
		/// Binding for glStencilOp function.
		/// </summary>
		/// <param name="fail">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="zfail">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="zpass">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void StencilOp(int fail, int zfail, int zpass) {
			if      (Delegates.pglStencilOp != null)
				Delegates.pglStencilOp(fail, zfail, zpass);
			else
				throw new InvalidOperationException("binding point StencilOp cannot be found");
			LogProc("glStencilOp({0}, {1}, {2})", fail, zfail, zpass);
		}

		/// <summary>
		/// Binding for glStencilOpSeparate function.
		/// </summary>
		/// <param name="face">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="sfail">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="dpfail">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="dppass">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void StencilOpSeparate(int face, int sfail, int dpfail, int dppass) {
			if      (Delegates.pglStencilOpSeparate != null)
				Delegates.pglStencilOpSeparate(face, sfail, dpfail, dppass);
			else
				throw new InvalidOperationException("binding point StencilOpSeparate cannot be found");
			LogProc("glStencilOpSeparate({0}, {1}, {2}, {3})", face, sfail, dpfail, dppass);
		}

		/// <summary>
		/// Binding for glTexBuffer function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="internalformat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="buffer">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.1
		public static void TexBuffer(int target, int internalformat, UInt32 buffer) {
			if      (Delegates.pglTexBuffer != null)
				Delegates.pglTexBuffer(target, internalformat, buffer);
			else
				throw new InvalidOperationException("binding point TexBuffer cannot be found");
			LogProc("glTexBuffer({0}, {1}, {2})", target, internalformat, buffer);
		}

		/// <summary>
		/// Binding for glTexCoord1d function.
		/// </summary>
		/// <param name="s">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void TexCoord1(double s) {
			if      (Delegates.pglTexCoord1d != null)
				Delegates.pglTexCoord1d(s);
			else
				throw new InvalidOperationException("binding point TexCoord1 cannot be found");
			LogProc("glTexCoord1d({0})", s);
		}

		/// <summary>
		/// Binding for glTexCoord1dv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void TexCoord1(double[] v) {
			unsafe {
				fixed (double* fp_v = v)
				{
					if      (Delegates.pglTexCoord1dv != null)
						Delegates.pglTexCoord1dv(fp_v);
					else
						throw new InvalidOperationException("binding point TexCoord1 cannot be found");
				}
			}
			LogProc("glTexCoord1dv({0})", v);
		}

		/// <summary>
		/// Binding for glTexCoord1f function.
		/// </summary>
		/// <param name="s">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void TexCoord1(float s) {
			if      (Delegates.pglTexCoord1f != null)
				Delegates.pglTexCoord1f(s);
			else
				throw new InvalidOperationException("binding point TexCoord1 cannot be found");
			LogProc("glTexCoord1f({0})", s);
		}

		/// <summary>
		/// Binding for glTexCoord1fv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void TexCoord1(float[] v) {
			unsafe {
				fixed (float* fp_v = v)
				{
					if      (Delegates.pglTexCoord1fv != null)
						Delegates.pglTexCoord1fv(fp_v);
					else
						throw new InvalidOperationException("binding point TexCoord1 cannot be found");
				}
			}
			LogProc("glTexCoord1fv({0})", v);
		}

		/// <summary>
		/// Binding for glTexCoord1i function.
		/// </summary>
		/// <param name="s">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void TexCoord1(int s) {
			if      (Delegates.pglTexCoord1i != null)
				Delegates.pglTexCoord1i(s);
			else
				throw new InvalidOperationException("binding point TexCoord1 cannot be found");
			LogProc("glTexCoord1i({0})", s);
		}

		/// <summary>
		/// Binding for glTexCoord1iv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void TexCoord1(int[] v) {
			unsafe {
				fixed (int* fp_v = v)
				{
					if      (Delegates.pglTexCoord1iv != null)
						Delegates.pglTexCoord1iv(fp_v);
					else
						throw new InvalidOperationException("binding point TexCoord1 cannot be found");
				}
			}
			LogProc("glTexCoord1iv({0})", v);
		}

		/// <summary>
		/// Binding for glTexCoord1s function.
		/// </summary>
		/// <param name="s">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void TexCoord1(Int16 s) {
			if      (Delegates.pglTexCoord1s != null)
				Delegates.pglTexCoord1s(s);
			else
				throw new InvalidOperationException("binding point TexCoord1 cannot be found");
			LogProc("glTexCoord1s({0})", s);
		}

		/// <summary>
		/// Binding for glTexCoord1sv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Int16*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void TexCoord1(Int16[] v) {
			unsafe {
				fixed (Int16* fp_v = v)
				{
					if      (Delegates.pglTexCoord1sv != null)
						Delegates.pglTexCoord1sv(fp_v);
					else
						throw new InvalidOperationException("binding point TexCoord1 cannot be found");
				}
			}
			LogProc("glTexCoord1sv({0})", v);
		}

		/// <summary>
		/// Binding for glTexCoord2d function.
		/// </summary>
		/// <param name="s">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="t">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void TexCoord2(double s, double t) {
			if      (Delegates.pglTexCoord2d != null)
				Delegates.pglTexCoord2d(s, t);
			else
				throw new InvalidOperationException("binding point TexCoord2 cannot be found");
			LogProc("glTexCoord2d({0}, {1})", s, t);
		}

		/// <summary>
		/// Binding for glTexCoord2dv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void TexCoord2(double[] v) {
			unsafe {
				fixed (double* fp_v = v)
				{
					if      (Delegates.pglTexCoord2dv != null)
						Delegates.pglTexCoord2dv(fp_v);
					else
						throw new InvalidOperationException("binding point TexCoord2 cannot be found");
				}
			}
			LogProc("glTexCoord2dv({0})", v);
		}

		/// <summary>
		/// Binding for glTexCoord2f function.
		/// </summary>
		/// <param name="s">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="t">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void TexCoord2(float s, float t) {
			if      (Delegates.pglTexCoord2f != null)
				Delegates.pglTexCoord2f(s, t);
			else
				throw new InvalidOperationException("binding point TexCoord2 cannot be found");
			LogProc("glTexCoord2f({0}, {1})", s, t);
		}

		/// <summary>
		/// Binding for glTexCoord2fv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void TexCoord2(float[] v) {
			unsafe {
				fixed (float* fp_v = v)
				{
					if      (Delegates.pglTexCoord2fv != null)
						Delegates.pglTexCoord2fv(fp_v);
					else
						throw new InvalidOperationException("binding point TexCoord2 cannot be found");
				}
			}
			LogProc("glTexCoord2fv({0})", v);
		}

		/// <summary>
		/// Binding for glTexCoord2i function.
		/// </summary>
		/// <param name="s">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="t">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void TexCoord2(int s, int t) {
			if      (Delegates.pglTexCoord2i != null)
				Delegates.pglTexCoord2i(s, t);
			else
				throw new InvalidOperationException("binding point TexCoord2 cannot be found");
			LogProc("glTexCoord2i({0}, {1})", s, t);
		}

		/// <summary>
		/// Binding for glTexCoord2iv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void TexCoord2(int[] v) {
			unsafe {
				fixed (int* fp_v = v)
				{
					if      (Delegates.pglTexCoord2iv != null)
						Delegates.pglTexCoord2iv(fp_v);
					else
						throw new InvalidOperationException("binding point TexCoord2 cannot be found");
				}
			}
			LogProc("glTexCoord2iv({0})", v);
		}

		/// <summary>
		/// Binding for glTexCoord2s function.
		/// </summary>
		/// <param name="s">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// <param name="t">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void TexCoord2(Int16 s, Int16 t) {
			if      (Delegates.pglTexCoord2s != null)
				Delegates.pglTexCoord2s(s, t);
			else
				throw new InvalidOperationException("binding point TexCoord2 cannot be found");
			LogProc("glTexCoord2s({0}, {1})", s, t);
		}

		/// <summary>
		/// Binding for glTexCoord2sv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Int16*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void TexCoord2(Int16[] v) {
			unsafe {
				fixed (Int16* fp_v = v)
				{
					if      (Delegates.pglTexCoord2sv != null)
						Delegates.pglTexCoord2sv(fp_v);
					else
						throw new InvalidOperationException("binding point TexCoord2 cannot be found");
				}
			}
			LogProc("glTexCoord2sv({0})", v);
		}

		/// <summary>
		/// Binding for glTexCoord3d function.
		/// </summary>
		/// <param name="s">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="t">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="r">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void TexCoord3(double s, double t, double r) {
			if      (Delegates.pglTexCoord3d != null)
				Delegates.pglTexCoord3d(s, t, r);
			else
				throw new InvalidOperationException("binding point TexCoord3 cannot be found");
			LogProc("glTexCoord3d({0}, {1}, {2})", s, t, r);
		}

		/// <summary>
		/// Binding for glTexCoord3dv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void TexCoord3(double[] v) {
			unsafe {
				fixed (double* fp_v = v)
				{
					if      (Delegates.pglTexCoord3dv != null)
						Delegates.pglTexCoord3dv(fp_v);
					else
						throw new InvalidOperationException("binding point TexCoord3 cannot be found");
				}
			}
			LogProc("glTexCoord3dv({0})", v);
		}

		/// <summary>
		/// Binding for glTexCoord3f function.
		/// </summary>
		/// <param name="s">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="t">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="r">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void TexCoord3(float s, float t, float r) {
			if      (Delegates.pglTexCoord3f != null)
				Delegates.pglTexCoord3f(s, t, r);
			else
				throw new InvalidOperationException("binding point TexCoord3 cannot be found");
			LogProc("glTexCoord3f({0}, {1}, {2})", s, t, r);
		}

		/// <summary>
		/// Binding for glTexCoord3fv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void TexCoord3(float[] v) {
			unsafe {
				fixed (float* fp_v = v)
				{
					if      (Delegates.pglTexCoord3fv != null)
						Delegates.pglTexCoord3fv(fp_v);
					else
						throw new InvalidOperationException("binding point TexCoord3 cannot be found");
				}
			}
			LogProc("glTexCoord3fv({0})", v);
		}

		/// <summary>
		/// Binding for glTexCoord3i function.
		/// </summary>
		/// <param name="s">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="t">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="r">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void TexCoord3(int s, int t, int r) {
			if      (Delegates.pglTexCoord3i != null)
				Delegates.pglTexCoord3i(s, t, r);
			else
				throw new InvalidOperationException("binding point TexCoord3 cannot be found");
			LogProc("glTexCoord3i({0}, {1}, {2})", s, t, r);
		}

		/// <summary>
		/// Binding for glTexCoord3iv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void TexCoord3(int[] v) {
			unsafe {
				fixed (int* fp_v = v)
				{
					if      (Delegates.pglTexCoord3iv != null)
						Delegates.pglTexCoord3iv(fp_v);
					else
						throw new InvalidOperationException("binding point TexCoord3 cannot be found");
				}
			}
			LogProc("glTexCoord3iv({0})", v);
		}

		/// <summary>
		/// Binding for glTexCoord3s function.
		/// </summary>
		/// <param name="s">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// <param name="t">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// <param name="r">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void TexCoord3(Int16 s, Int16 t, Int16 r) {
			if      (Delegates.pglTexCoord3s != null)
				Delegates.pglTexCoord3s(s, t, r);
			else
				throw new InvalidOperationException("binding point TexCoord3 cannot be found");
			LogProc("glTexCoord3s({0}, {1}, {2})", s, t, r);
		}

		/// <summary>
		/// Binding for glTexCoord3sv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Int16*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void TexCoord3(Int16[] v) {
			unsafe {
				fixed (Int16* fp_v = v)
				{
					if      (Delegates.pglTexCoord3sv != null)
						Delegates.pglTexCoord3sv(fp_v);
					else
						throw new InvalidOperationException("binding point TexCoord3 cannot be found");
				}
			}
			LogProc("glTexCoord3sv({0})", v);
		}

		/// <summary>
		/// Binding for glTexCoord4d function.
		/// </summary>
		/// <param name="s">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="t">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="r">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="q">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void TexCoord4(double s, double t, double r, double q) {
			if      (Delegates.pglTexCoord4d != null)
				Delegates.pglTexCoord4d(s, t, r, q);
			else
				throw new InvalidOperationException("binding point TexCoord4 cannot be found");
			LogProc("glTexCoord4d({0}, {1}, {2}, {3})", s, t, r, q);
		}

		/// <summary>
		/// Binding for glTexCoord4dv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void TexCoord4(double[] v) {
			unsafe {
				fixed (double* fp_v = v)
				{
					if      (Delegates.pglTexCoord4dv != null)
						Delegates.pglTexCoord4dv(fp_v);
					else
						throw new InvalidOperationException("binding point TexCoord4 cannot be found");
				}
			}
			LogProc("glTexCoord4dv({0})", v);
		}

		/// <summary>
		/// Binding for glTexCoord4f function.
		/// </summary>
		/// <param name="s">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="t">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="r">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="q">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void TexCoord4(float s, float t, float r, float q) {
			if      (Delegates.pglTexCoord4f != null)
				Delegates.pglTexCoord4f(s, t, r, q);
			else
				throw new InvalidOperationException("binding point TexCoord4 cannot be found");
			LogProc("glTexCoord4f({0}, {1}, {2}, {3})", s, t, r, q);
		}

		/// <summary>
		/// Binding for glTexCoord4fv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void TexCoord4(float[] v) {
			unsafe {
				fixed (float* fp_v = v)
				{
					if      (Delegates.pglTexCoord4fv != null)
						Delegates.pglTexCoord4fv(fp_v);
					else
						throw new InvalidOperationException("binding point TexCoord4 cannot be found");
				}
			}
			LogProc("glTexCoord4fv({0})", v);
		}

		/// <summary>
		/// Binding for glTexCoord4i function.
		/// </summary>
		/// <param name="s">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="t">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="r">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="q">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void TexCoord4(int s, int t, int r, int q) {
			if      (Delegates.pglTexCoord4i != null)
				Delegates.pglTexCoord4i(s, t, r, q);
			else
				throw new InvalidOperationException("binding point TexCoord4 cannot be found");
			LogProc("glTexCoord4i({0}, {1}, {2}, {3})", s, t, r, q);
		}

		/// <summary>
		/// Binding for glTexCoord4iv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void TexCoord4(int[] v) {
			unsafe {
				fixed (int* fp_v = v)
				{
					if      (Delegates.pglTexCoord4iv != null)
						Delegates.pglTexCoord4iv(fp_v);
					else
						throw new InvalidOperationException("binding point TexCoord4 cannot be found");
				}
			}
			LogProc("glTexCoord4iv({0})", v);
		}

		/// <summary>
		/// Binding for glTexCoord4s function.
		/// </summary>
		/// <param name="s">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// <param name="t">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// <param name="r">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// <param name="q">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void TexCoord4(Int16 s, Int16 t, Int16 r, Int16 q) {
			if      (Delegates.pglTexCoord4s != null)
				Delegates.pglTexCoord4s(s, t, r, q);
			else
				throw new InvalidOperationException("binding point TexCoord4 cannot be found");
			LogProc("glTexCoord4s({0}, {1}, {2}, {3})", s, t, r, q);
		}

		/// <summary>
		/// Binding for glTexCoord4sv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Int16*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void TexCoord4(Int16[] v) {
			unsafe {
				fixed (Int16* fp_v = v)
				{
					if      (Delegates.pglTexCoord4sv != null)
						Delegates.pglTexCoord4sv(fp_v);
					else
						throw new InvalidOperationException("binding point TexCoord4 cannot be found");
				}
			}
			LogProc("glTexCoord4sv({0})", v);
		}

		/// <summary>
		/// Binding for glTexCoordP1ui function.
		/// </summary>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="coords">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void TexCoordP1(int type, UInt32 coords) {
			if      (Delegates.pglTexCoordP1ui != null)
				Delegates.pglTexCoordP1ui(type, coords);
			else
				throw new InvalidOperationException("binding point TexCoordP1 cannot be found");
			LogProc("glTexCoordP1ui({0}, {1})", type, coords);
		}

		/// <summary>
		/// Binding for glTexCoordP1uiv function.
		/// </summary>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="coords">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void TexCoordP1(int type, UInt32[] coords) {
			unsafe {
				fixed (UInt32* fp_coords = coords)
				{
					if      (Delegates.pglTexCoordP1uiv != null)
						Delegates.pglTexCoordP1uiv(type, fp_coords);
					else
						throw new InvalidOperationException("binding point TexCoordP1 cannot be found");
				}
			}
			LogProc("glTexCoordP1uiv({0}, {1})", type, coords);
		}

		/// <summary>
		/// Binding for glTexCoordP1uiv function.
		/// </summary>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="coords">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void TexCoordP1(int type, UInt32* coords) {
			unsafe {
				if      (Delegates.pglTexCoordP1uiv != null)
					Delegates.pglTexCoordP1uiv(type, coords);
				else
					throw new InvalidOperationException("binding point TexCoordP1 cannot be found");
			}
			LogProc("glTexCoordP1uiv({0}, {1})", type, "coords");
		}
		

		/// <summary>
		/// Binding for glTexCoordP2ui function.
		/// </summary>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="coords">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void TexCoordP2(int type, UInt32 coords) {
			if      (Delegates.pglTexCoordP2ui != null)
				Delegates.pglTexCoordP2ui(type, coords);
			else
				throw new InvalidOperationException("binding point TexCoordP2 cannot be found");
			LogProc("glTexCoordP2ui({0}, {1})", type, coords);
		}

		/// <summary>
		/// Binding for glTexCoordP2uiv function.
		/// </summary>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="coords">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void TexCoordP2(int type, UInt32[] coords) {
			unsafe {
				fixed (UInt32* fp_coords = coords)
				{
					if      (Delegates.pglTexCoordP2uiv != null)
						Delegates.pglTexCoordP2uiv(type, fp_coords);
					else
						throw new InvalidOperationException("binding point TexCoordP2 cannot be found");
				}
			}
			LogProc("glTexCoordP2uiv({0}, {1})", type, coords);
		}

		/// <summary>
		/// Binding for glTexCoordP2uiv function.
		/// </summary>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="coords">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void TexCoordP2(int type, UInt32* coords) {
			unsafe {
				if      (Delegates.pglTexCoordP2uiv != null)
					Delegates.pglTexCoordP2uiv(type, coords);
				else
					throw new InvalidOperationException("binding point TexCoordP2 cannot be found");
			}
			LogProc("glTexCoordP2uiv({0}, {1})", type, "coords");
		}
		

		/// <summary>
		/// Binding for glTexCoordP3ui function.
		/// </summary>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="coords">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void TexCoordP3(int type, UInt32 coords) {
			if      (Delegates.pglTexCoordP3ui != null)
				Delegates.pglTexCoordP3ui(type, coords);
			else
				throw new InvalidOperationException("binding point TexCoordP3 cannot be found");
			LogProc("glTexCoordP3ui({0}, {1})", type, coords);
		}

		/// <summary>
		/// Binding for glTexCoordP3uiv function.
		/// </summary>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="coords">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void TexCoordP3(int type, UInt32[] coords) {
			unsafe {
				fixed (UInt32* fp_coords = coords)
				{
					if      (Delegates.pglTexCoordP3uiv != null)
						Delegates.pglTexCoordP3uiv(type, fp_coords);
					else
						throw new InvalidOperationException("binding point TexCoordP3 cannot be found");
				}
			}
			LogProc("glTexCoordP3uiv({0}, {1})", type, coords);
		}

		/// <summary>
		/// Binding for glTexCoordP3uiv function.
		/// </summary>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="coords">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void TexCoordP3(int type, UInt32* coords) {
			unsafe {
				if      (Delegates.pglTexCoordP3uiv != null)
					Delegates.pglTexCoordP3uiv(type, coords);
				else
					throw new InvalidOperationException("binding point TexCoordP3 cannot be found");
			}
			LogProc("glTexCoordP3uiv({0}, {1})", type, "coords");
		}
		

		/// <summary>
		/// Binding for glTexCoordP4ui function.
		/// </summary>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="coords">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void TexCoordP4(int type, UInt32 coords) {
			if      (Delegates.pglTexCoordP4ui != null)
				Delegates.pglTexCoordP4ui(type, coords);
			else
				throw new InvalidOperationException("binding point TexCoordP4 cannot be found");
			LogProc("glTexCoordP4ui({0}, {1})", type, coords);
		}

		/// <summary>
		/// Binding for glTexCoordP4uiv function.
		/// </summary>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="coords">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void TexCoordP4(int type, UInt32[] coords) {
			unsafe {
				fixed (UInt32* fp_coords = coords)
				{
					if      (Delegates.pglTexCoordP4uiv != null)
						Delegates.pglTexCoordP4uiv(type, fp_coords);
					else
						throw new InvalidOperationException("binding point TexCoordP4 cannot be found");
				}
			}
			LogProc("glTexCoordP4uiv({0}, {1})", type, coords);
		}

		/// <summary>
		/// Binding for glTexCoordP4uiv function.
		/// </summary>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="coords">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void TexCoordP4(int type, UInt32* coords) {
			unsafe {
				if      (Delegates.pglTexCoordP4uiv != null)
					Delegates.pglTexCoordP4uiv(type, coords);
				else
					throw new InvalidOperationException("binding point TexCoordP4 cannot be found");
			}
			LogProc("glTexCoordP4uiv({0}, {1})", type, "coords");
		}
		

		/// <summary>
		/// Binding for glTexCoordPointer function.
		/// </summary>
		/// <param name="size">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="stride">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pointer">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		/// @deprecated
		public static void TexCoordPointer(int size, int type, Int32 stride, object pointer) {
			GCHandle pp_pointer = GCHandle.Alloc(pointer, GCHandleType.Pinned);
			try {
				if      (Delegates.pglTexCoordPointer != null)
					Delegates.pglTexCoordPointer(size, type, stride, pp_pointer.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point TexCoordPointer cannot be found");
			} finally {
				pp_pointer.Free();
			}
			LogProc("glTexCoordPointer({0}, {1}, {2}, {3})", size, type, stride, pointer);
		}

		/// <summary>
		/// Binding for glTexEnvf function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="param">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void TexEnv(int target, int pname, float param) {
			if      (Delegates.pglTexEnvf != null)
				Delegates.pglTexEnvf(target, pname, param);
			else
				throw new InvalidOperationException("binding point TexEnv cannot be found");
			LogProc("glTexEnvf({0}, {1}, {2})", target, pname, param);
		}

		/// <summary>
		/// Binding for glTexEnvfv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void TexEnv(int target, int pname, float[] @params) {
			unsafe {
				fixed (float* fp_params = @params)
				{
					if      (Delegates.pglTexEnvfv != null)
						Delegates.pglTexEnvfv(target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point TexEnv cannot be found");
				}
			}
			LogProc("glTexEnvfv({0}, {1}, {2})", target, pname, @params);
		}

		/// <summary>
		/// Binding for glTexEnvi function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="param">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void TexEnv(int target, int pname, int param) {
			if      (Delegates.pglTexEnvi != null)
				Delegates.pglTexEnvi(target, pname, param);
			else
				throw new InvalidOperationException("binding point TexEnv cannot be found");
			LogProc("glTexEnvi({0}, {1}, {2})", target, pname, param);
		}

		/// <summary>
		/// Binding for glTexEnviv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void TexEnv(int target, int pname, int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglTexEnviv != null)
						Delegates.pglTexEnviv(target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point TexEnv cannot be found");
				}
			}
			LogProc("glTexEnviv({0}, {1}, {2})", target, pname, @params);
		}

		/// <summary>
		/// Binding for glTexGend function.
		/// </summary>
		/// <param name="coord">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="param">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void TexGen(int coord, int pname, double param) {
			if      (Delegates.pglTexGend != null)
				Delegates.pglTexGend(coord, pname, param);
			else
				throw new InvalidOperationException("binding point TexGen cannot be found");
			LogProc("glTexGend({0}, {1}, {2})", coord, pname, param);
		}

		/// <summary>
		/// Binding for glTexGendv function.
		/// </summary>
		/// <param name="coord">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void TexGen(int coord, int pname, double[] @params) {
			unsafe {
				fixed (double* fp_params = @params)
				{
					if      (Delegates.pglTexGendv != null)
						Delegates.pglTexGendv(coord, pname, fp_params);
					else
						throw new InvalidOperationException("binding point TexGen cannot be found");
				}
			}
			LogProc("glTexGendv({0}, {1}, {2})", coord, pname, @params);
		}

		/// <summary>
		/// Binding for glTexGendv function.
		/// </summary>
		/// <param name="coord">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void TexGen(int coord, int pname, double* @params) {
			unsafe {
				if      (Delegates.pglTexGendv != null)
					Delegates.pglTexGendv(coord, pname, @params);
				else
					throw new InvalidOperationException("binding point TexGen cannot be found");
			}
			LogProc("glTexGendv({0}, {1}, {2})", coord, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glTexGenf function.
		/// </summary>
		/// <param name="coord">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="param">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void TexGen(int coord, int pname, float param) {
			if      (Delegates.pglTexGenf != null)
				Delegates.pglTexGenf(coord, pname, param);
			else
				throw new InvalidOperationException("binding point TexGen cannot be found");
			LogProc("glTexGenf({0}, {1}, {2})", coord, pname, param);
		}

		/// <summary>
		/// Binding for glTexGenfv function.
		/// </summary>
		/// <param name="coord">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void TexGen(int coord, int pname, float[] @params) {
			unsafe {
				fixed (float* fp_params = @params)
				{
					if      (Delegates.pglTexGenfv != null)
						Delegates.pglTexGenfv(coord, pname, fp_params);
					else
						throw new InvalidOperationException("binding point TexGen cannot be found");
				}
			}
			LogProc("glTexGenfv({0}, {1}, {2})", coord, pname, @params);
		}

		/// <summary>
		/// Binding for glTexGeni function.
		/// </summary>
		/// <param name="coord">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="param">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void TexGen(int coord, int pname, int param) {
			if      (Delegates.pglTexGeni != null)
				Delegates.pglTexGeni(coord, pname, param);
			else
				throw new InvalidOperationException("binding point TexGen cannot be found");
			LogProc("glTexGeni({0}, {1}, {2})", coord, pname, param);
		}

		/// <summary>
		/// Binding for glTexGeniv function.
		/// </summary>
		/// <param name="coord">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void TexGen(int coord, int pname, int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglTexGeniv != null)
						Delegates.pglTexGeniv(coord, pname, fp_params);
					else
						throw new InvalidOperationException("binding point TexGen cannot be found");
				}
			}
			LogProc("glTexGeniv({0}, {1}, {2})", coord, pname, @params);
		}

		/// <summary>
		/// Binding for glTexImage1D function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="internalformat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="border">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="format">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pixels">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void TexImage1D(int target, int level, int internalformat, Int32 width, int border, int format, int type, object pixels) {
			GCHandle pp_pixels = GCHandle.Alloc(pixels, GCHandleType.Pinned);
			try {
				if      (Delegates.pglTexImage1D != null)
					Delegates.pglTexImage1D(target, level, internalformat, width, border, format, type, pp_pixels.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point TexImage1D cannot be found");
			} finally {
				pp_pixels.Free();
			}
			LogProc("glTexImage1D({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7})", target, level, internalformat, width, border, format, type, pixels);
		}

		/// <summary>
		/// Binding for glTexImage2D function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="internalformat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="border">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="format">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pixels">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void TexImage2D(int target, int level, int internalformat, Int32 width, Int32 height, int border, int format, int type, object pixels) {
			GCHandle pp_pixels = GCHandle.Alloc(pixels, GCHandleType.Pinned);
			try {
				if      (Delegates.pglTexImage2D != null)
					Delegates.pglTexImage2D(target, level, internalformat, width, height, border, format, type, pp_pixels.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point TexImage2D cannot be found");
			} finally {
				pp_pixels.Free();
			}
			LogProc("glTexImage2D({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8})", target, level, internalformat, width, height, border, format, type, pixels);
		}

		/// <summary>
		/// Binding for glTexImage2DMultisample function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="samples">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="internalformat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="fixedsamplelocations">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void TexImage2DMultisample(int target, Int32 samples, int internalformat, Int32 width, Int32 height, bool fixedsamplelocations) {
			if      (Delegates.pglTexImage2DMultisample != null)
				Delegates.pglTexImage2DMultisample(target, samples, internalformat, width, height, fixedsamplelocations);
			else
				throw new InvalidOperationException("binding point TexImage2DMultisample cannot be found");
			LogProc("glTexImage2DMultisample({0}, {1}, {2}, {3}, {4}, {5})", target, samples, internalformat, width, height, fixedsamplelocations);
		}

		/// <summary>
		/// Binding for glTexImage3D function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="internalformat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="depth">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="border">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="format">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pixels">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		/// @deprecated
		public static void TexImage3D(int target, int level, int internalformat, Int32 width, Int32 height, Int32 depth, int border, int format, int type, object pixels) {
			GCHandle pp_pixels = GCHandle.Alloc(pixels, GCHandleType.Pinned);
			try {
				if      (Delegates.pglTexImage3D != null)
					Delegates.pglTexImage3D(target, level, internalformat, width, height, depth, border, format, type, pp_pixels.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point TexImage3D cannot be found");
			} finally {
				pp_pixels.Free();
			}
			LogProc("glTexImage3D({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9})", target, level, internalformat, width, height, depth, border, format, type, pixels);
		}

		/// <summary>
		/// Binding for glTexImage3DMultisample function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="samples">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="internalformat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="depth">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="fixedsamplelocations">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void TexImage3DMultisample(int target, Int32 samples, int internalformat, Int32 width, Int32 height, Int32 depth, bool fixedsamplelocations) {
			if      (Delegates.pglTexImage3DMultisample != null)
				Delegates.pglTexImage3DMultisample(target, samples, internalformat, width, height, depth, fixedsamplelocations);
			else
				throw new InvalidOperationException("binding point TexImage3DMultisample cannot be found");
			LogProc("glTexImage3DMultisample({0}, {1}, {2}, {3}, {4}, {5}, {6})", target, samples, internalformat, width, height, depth, fixedsamplelocations);
		}

		/// <summary>
		/// Binding for glTexParameterf function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="param">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void TexParameter(int target, int pname, float param) {
			if      (Delegates.pglTexParameterf != null)
				Delegates.pglTexParameterf(target, pname, param);
			else
				throw new InvalidOperationException("binding point TexParameter cannot be found");
			LogProc("glTexParameterf({0}, {1}, {2})", target, pname, param);
		}

		/// <summary>
		/// Binding for glTexParameterfv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void TexParameter(int target, int pname, float[] @params) {
			unsafe {
				fixed (float* fp_params = @params)
				{
					if      (Delegates.pglTexParameterfv != null)
						Delegates.pglTexParameterfv(target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point TexParameter cannot be found");
				}
			}
			LogProc("glTexParameterfv({0}, {1}, {2})", target, pname, @params);
		}

		/// <summary>
		/// Binding for glTexParameteri function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="param">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void TexParameter(int target, int pname, int param) {
			if      (Delegates.pglTexParameteri != null)
				Delegates.pglTexParameteri(target, pname, param);
			else
				throw new InvalidOperationException("binding point TexParameter cannot be found");
			LogProc("glTexParameteri({0}, {1}, {2})", target, pname, param);
		}

		/// <summary>
		/// Binding for glTexParameterIiv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void TexParameterI(int target, int pname, int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglTexParameterIiv != null)
						Delegates.pglTexParameterIiv(target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point TexParameterI cannot be found");
				}
			}
			LogProc("glTexParameterIiv({0}, {1}, {2})", target, pname, @params);
		}

		/// <summary>
		/// Binding for glTexParameterIiv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void TexParameterI(int target, int pname, int* @params) {
			unsafe {
				if      (Delegates.pglTexParameterIiv != null)
					Delegates.pglTexParameterIiv(target, pname, @params);
				else
					throw new InvalidOperationException("binding point TexParameterI cannot be found");
			}
			LogProc("glTexParameterIiv({0}, {1}, {2})", target, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glTexParameterIuiv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void TexParameterI(int target, int pname, UInt32[] @params) {
			unsafe {
				fixed (UInt32* fp_params = @params)
				{
					if      (Delegates.pglTexParameterIuiv != null)
						Delegates.pglTexParameterIuiv(target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point TexParameterI cannot be found");
				}
			}
			LogProc("glTexParameterIuiv({0}, {1}, {2})", target, pname, @params);
		}

		/// <summary>
		/// Binding for glTexParameterIuiv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void TexParameterI(int target, int pname, UInt32* @params) {
			unsafe {
				if      (Delegates.pglTexParameterIuiv != null)
					Delegates.pglTexParameterIuiv(target, pname, @params);
				else
					throw new InvalidOperationException("binding point TexParameterI cannot be found");
			}
			LogProc("glTexParameterIuiv({0}, {1}, {2})", target, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glTexParameteriv function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void TexParameter(int target, int pname, int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglTexParameteriv != null)
						Delegates.pglTexParameteriv(target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point TexParameter cannot be found");
				}
			}
			LogProc("glTexParameteriv({0}, {1}, {2})", target, pname, @params);
		}

		/// <summary>
		/// Binding for glTexStorage1D function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="levels">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="internalformat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.2
		public static void TexStorage1D(int target, Int32 levels, int internalformat, Int32 width) {
			if      (Delegates.pglTexStorage1D != null)
				Delegates.pglTexStorage1D(target, levels, internalformat, width);
			else
				throw new InvalidOperationException("binding point TexStorage1D cannot be found");
			LogProc("glTexStorage1D({0}, {1}, {2}, {3})", target, levels, internalformat, width);
		}

		/// <summary>
		/// Binding for glTexStorage2D function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="levels">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="internalformat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.2
		public static void TexStorage2D(int target, Int32 levels, int internalformat, Int32 width, Int32 height) {
			if      (Delegates.pglTexStorage2D != null)
				Delegates.pglTexStorage2D(target, levels, internalformat, width, height);
			else
				throw new InvalidOperationException("binding point TexStorage2D cannot be found");
			LogProc("glTexStorage2D({0}, {1}, {2}, {3}, {4})", target, levels, internalformat, width, height);
		}

		/// <summary>
		/// Binding for glTexStorage3D function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="levels">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="internalformat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="depth">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.2
		public static void TexStorage3D(int target, Int32 levels, int internalformat, Int32 width, Int32 height, Int32 depth) {
			if      (Delegates.pglTexStorage3D != null)
				Delegates.pglTexStorage3D(target, levels, internalformat, width, height, depth);
			else
				throw new InvalidOperationException("binding point TexStorage3D cannot be found");
			LogProc("glTexStorage3D({0}, {1}, {2}, {3}, {4}, {5})", target, levels, internalformat, width, height, depth);
		}

		/// <summary>
		/// Binding for glTexSubImage1D function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="xoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="format">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pixels">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void TexSubImage1D(int target, int level, int xoffset, Int32 width, int format, int type, object pixels) {
			GCHandle pp_pixels = GCHandle.Alloc(pixels, GCHandleType.Pinned);
			try {
				if      (Delegates.pglTexSubImage1D != null)
					Delegates.pglTexSubImage1D(target, level, xoffset, width, format, type, pp_pixels.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point TexSubImage1D cannot be found");
			} finally {
				pp_pixels.Free();
			}
			LogProc("glTexSubImage1D({0}, {1}, {2}, {3}, {4}, {5}, {6})", target, level, xoffset, width, format, type, pixels);
		}

		/// <summary>
		/// Binding for glTexSubImage2D function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="xoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="yoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="format">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pixels">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void TexSubImage2D(int target, int level, int xoffset, int yoffset, Int32 width, Int32 height, int format, int type, object pixels) {
			GCHandle pp_pixels = GCHandle.Alloc(pixels, GCHandleType.Pinned);
			try {
				if      (Delegates.pglTexSubImage2D != null)
					Delegates.pglTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pp_pixels.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point TexSubImage2D cannot be found");
			} finally {
				pp_pixels.Free();
			}
			LogProc("glTexSubImage2D({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8})", target, level, xoffset, yoffset, width, height, format, type, pixels);
		}

		/// <summary>
		/// Binding for glTexSubImage3D function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="xoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="yoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="zoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="depth">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="format">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pixels">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void TexSubImage3D(int target, int level, int xoffset, int yoffset, int zoffset, Int32 width, Int32 height, Int32 depth, int format, int type, object pixels) {
			GCHandle pp_pixels = GCHandle.Alloc(pixels, GCHandleType.Pinned);
			try {
				if      (Delegates.pglTexSubImage3D != null)
					Delegates.pglTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pp_pixels.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point TexSubImage3D cannot be found");
			} finally {
				pp_pixels.Free();
			}
			LogProc("glTexSubImage3D({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9}, {10})", target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels);
		}

		/// <summary>
		/// Binding for glTransformFeedbackVaryings function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="varyings">
		/// A <see cref="T:System.String[]"/>.
		/// </param>
		/// <param name="bufferMode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void TransformFeedbackVarying(UInt32 program, Int32 count, string[] varyings, int bufferMode) {
			if      (Delegates.pglTransformFeedbackVaryings != null)
				Delegates.pglTransformFeedbackVaryings(program, count, varyings, bufferMode);
			else
				throw new InvalidOperationException("binding point TransformFeedbackVarying cannot be found");
			LogProc("glTransformFeedbackVaryings({0}, {1}, {2}, {3})", program, count, varyings, bufferMode);
		}

		/// <summary>
		/// Binding for glTranslated function.
		/// </summary>
		/// <param name="x">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Translate(double x, double y, double z) {
			if      (Delegates.pglTranslated != null)
				Delegates.pglTranslated(x, y, z);
			else
				throw new InvalidOperationException("binding point Translate cannot be found");
			LogProc("glTranslated({0}, {1}, {2})", x, y, z);
		}

		/// <summary>
		/// Binding for glTranslatef function.
		/// </summary>
		/// <param name="x">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Translate(float x, float y, float z) {
			if      (Delegates.pglTranslatef != null)
				Delegates.pglTranslatef(x, y, z);
			else
				throw new InvalidOperationException("binding point Translate cannot be found");
			LogProc("glTranslatef({0}, {1}, {2})", x, y, z);
		}

		/// <summary>
		/// Binding for glUniform1d function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void Uniform1(int location, double x) {
			if      (Delegates.pglUniform1d != null)
				Delegates.pglUniform1d(location, x);
			else
				throw new InvalidOperationException("binding point Uniform1 cannot be found");
			LogProc("glUniform1d({0}, {1})", location, x);
		}

		/// <summary>
		/// Binding for glUniform1dv function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void Uniform1(int location, Int32 count, double[] value) {
			unsafe {
				fixed (double* fp_value = value)
				{
					if      (Delegates.pglUniform1dv != null)
						Delegates.pglUniform1dv(location, count, fp_value);
					else
						throw new InvalidOperationException("binding point Uniform1 cannot be found");
				}
			}
			LogProc("glUniform1dv({0}, {1}, {2})", location, count, value);
		}

		/// <summary>
		/// Binding for glUniform1dv function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void Uniform1(int location, Int32 count, double* value) {
			unsafe {
				if      (Delegates.pglUniform1dv != null)
					Delegates.pglUniform1dv(location, count, value);
				else
					throw new InvalidOperationException("binding point Uniform1 cannot be found");
			}
			LogProc("glUniform1dv({0}, {1}, {2})", location, count, "value");
		}
		

		/// <summary>
		/// Binding for glUniform1f function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v0">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void Uniform1(int location, float v0) {
			if      (Delegates.pglUniform1f != null)
				Delegates.pglUniform1f(location, v0);
			else
				throw new InvalidOperationException("binding point Uniform1 cannot be found");
			LogProc("glUniform1f({0}, {1})", location, v0);
		}

		/// <summary>
		/// Binding for glUniform1fv function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void Uniform1(int location, Int32 count, float[] value) {
			unsafe {
				fixed (float* fp_value = value)
				{
					if      (Delegates.pglUniform1fv != null)
						Delegates.pglUniform1fv(location, count, fp_value);
					else
						throw new InvalidOperationException("binding point Uniform1 cannot be found");
				}
			}
			LogProc("glUniform1fv({0}, {1}, {2})", location, count, value);
		}

		/// <summary>
		/// Binding for glUniform1fv function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void Uniform1(int location, Int32 count, float* value) {
			unsafe {
				if      (Delegates.pglUniform1fv != null)
					Delegates.pglUniform1fv(location, count, value);
				else
					throw new InvalidOperationException("binding point Uniform1 cannot be found");
			}
			LogProc("glUniform1fv({0}, {1}, {2})", location, count, "value");
		}
		

		/// <summary>
		/// Binding for glUniform1i function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v0">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void Uniform1(int location, int v0) {
			if      (Delegates.pglUniform1i != null)
				Delegates.pglUniform1i(location, v0);
			else
				throw new InvalidOperationException("binding point Uniform1 cannot be found");
			LogProc("glUniform1i({0}, {1})", location, v0);
		}

		/// <summary>
		/// Binding for glUniform1iv function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void Uniform1(int location, Int32 count, int[] value) {
			unsafe {
				fixed (int* fp_value = value)
				{
					if      (Delegates.pglUniform1iv != null)
						Delegates.pglUniform1iv(location, count, fp_value);
					else
						throw new InvalidOperationException("binding point Uniform1 cannot be found");
				}
			}
			LogProc("glUniform1iv({0}, {1}, {2})", location, count, value);
		}

		/// <summary>
		/// Binding for glUniform1iv function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void Uniform1(int location, Int32 count, int* value) {
			unsafe {
				if      (Delegates.pglUniform1iv != null)
					Delegates.pglUniform1iv(location, count, value);
				else
					throw new InvalidOperationException("binding point Uniform1 cannot be found");
			}
			LogProc("glUniform1iv({0}, {1}, {2})", location, count, "value");
		}
		

		/// <summary>
		/// Binding for glUniform1ui function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v0">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void Uniform1(int location, UInt32 v0) {
			if      (Delegates.pglUniform1ui != null)
				Delegates.pglUniform1ui(location, v0);
			else
				throw new InvalidOperationException("binding point Uniform1 cannot be found");
			LogProc("glUniform1ui({0}, {1})", location, v0);
		}

		/// <summary>
		/// Binding for glUniform1uiv function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void Uniform1(int location, Int32 count, UInt32[] value) {
			unsafe {
				fixed (UInt32* fp_value = value)
				{
					if      (Delegates.pglUniform1uiv != null)
						Delegates.pglUniform1uiv(location, count, fp_value);
					else
						throw new InvalidOperationException("binding point Uniform1 cannot be found");
				}
			}
			LogProc("glUniform1uiv({0}, {1}, {2})", location, count, value);
		}

		/// <summary>
		/// Binding for glUniform1uiv function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void Uniform1(int location, Int32 count, UInt32* value) {
			unsafe {
				if      (Delegates.pglUniform1uiv != null)
					Delegates.pglUniform1uiv(location, count, value);
				else
					throw new InvalidOperationException("binding point Uniform1 cannot be found");
			}
			LogProc("glUniform1uiv({0}, {1}, {2})", location, count, "value");
		}
		

		/// <summary>
		/// Binding for glUniform2d function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void Uniform2(int location, double x, double y) {
			if      (Delegates.pglUniform2d != null)
				Delegates.pglUniform2d(location, x, y);
			else
				throw new InvalidOperationException("binding point Uniform2 cannot be found");
			LogProc("glUniform2d({0}, {1}, {2})", location, x, y);
		}

		/// <summary>
		/// Binding for glUniform2dv function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void Uniform2(int location, Int32 count, double[] value) {
			unsafe {
				fixed (double* fp_value = value)
				{
					if      (Delegates.pglUniform2dv != null)
						Delegates.pglUniform2dv(location, count, fp_value);
					else
						throw new InvalidOperationException("binding point Uniform2 cannot be found");
				}
			}
			LogProc("glUniform2dv({0}, {1}, {2})", location, count, value);
		}

		/// <summary>
		/// Binding for glUniform2dv function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void Uniform2(int location, Int32 count, double* value) {
			unsafe {
				if      (Delegates.pglUniform2dv != null)
					Delegates.pglUniform2dv(location, count, value);
				else
					throw new InvalidOperationException("binding point Uniform2 cannot be found");
			}
			LogProc("glUniform2dv({0}, {1}, {2})", location, count, "value");
		}
		

		/// <summary>
		/// Binding for glUniform2f function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v0">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="v1">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void Uniform2(int location, float v0, float v1) {
			if      (Delegates.pglUniform2f != null)
				Delegates.pglUniform2f(location, v0, v1);
			else
				throw new InvalidOperationException("binding point Uniform2 cannot be found");
			LogProc("glUniform2f({0}, {1}, {2})", location, v0, v1);
		}

		/// <summary>
		/// Binding for glUniform2fv function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void Uniform2(int location, Int32 count, float[] value) {
			unsafe {
				fixed (float* fp_value = value)
				{
					if      (Delegates.pglUniform2fv != null)
						Delegates.pglUniform2fv(location, count, fp_value);
					else
						throw new InvalidOperationException("binding point Uniform2 cannot be found");
				}
			}
			LogProc("glUniform2fv({0}, {1}, {2})", location, count, value);
		}

		/// <summary>
		/// Binding for glUniform2fv function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void Uniform2(int location, Int32 count, float* value) {
			unsafe {
				if      (Delegates.pglUniform2fv != null)
					Delegates.pglUniform2fv(location, count, value);
				else
					throw new InvalidOperationException("binding point Uniform2 cannot be found");
			}
			LogProc("glUniform2fv({0}, {1}, {2})", location, count, "value");
		}
		

		/// <summary>
		/// Binding for glUniform2i function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v0">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v1">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void Uniform2(int location, int v0, int v1) {
			if      (Delegates.pglUniform2i != null)
				Delegates.pglUniform2i(location, v0, v1);
			else
				throw new InvalidOperationException("binding point Uniform2 cannot be found");
			LogProc("glUniform2i({0}, {1}, {2})", location, v0, v1);
		}

		/// <summary>
		/// Binding for glUniform2iv function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void Uniform2(int location, Int32 count, int[] value) {
			unsafe {
				fixed (int* fp_value = value)
				{
					if      (Delegates.pglUniform2iv != null)
						Delegates.pglUniform2iv(location, count, fp_value);
					else
						throw new InvalidOperationException("binding point Uniform2 cannot be found");
				}
			}
			LogProc("glUniform2iv({0}, {1}, {2})", location, count, value);
		}

		/// <summary>
		/// Binding for glUniform2iv function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void Uniform2(int location, Int32 count, int* value) {
			unsafe {
				if      (Delegates.pglUniform2iv != null)
					Delegates.pglUniform2iv(location, count, value);
				else
					throw new InvalidOperationException("binding point Uniform2 cannot be found");
			}
			LogProc("glUniform2iv({0}, {1}, {2})", location, count, "value");
		}
		

		/// <summary>
		/// Binding for glUniform2ui function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v0">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v1">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void Uniform2(int location, UInt32 v0, UInt32 v1) {
			if      (Delegates.pglUniform2ui != null)
				Delegates.pglUniform2ui(location, v0, v1);
			else
				throw new InvalidOperationException("binding point Uniform2 cannot be found");
			LogProc("glUniform2ui({0}, {1}, {2})", location, v0, v1);
		}

		/// <summary>
		/// Binding for glUniform2uiv function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void Uniform2(int location, Int32 count, UInt32[] value) {
			unsafe {
				fixed (UInt32* fp_value = value)
				{
					if      (Delegates.pglUniform2uiv != null)
						Delegates.pglUniform2uiv(location, count, fp_value);
					else
						throw new InvalidOperationException("binding point Uniform2 cannot be found");
				}
			}
			LogProc("glUniform2uiv({0}, {1}, {2})", location, count, value);
		}

		/// <summary>
		/// Binding for glUniform2uiv function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void Uniform2(int location, Int32 count, UInt32* value) {
			unsafe {
				if      (Delegates.pglUniform2uiv != null)
					Delegates.pglUniform2uiv(location, count, value);
				else
					throw new InvalidOperationException("binding point Uniform2 cannot be found");
			}
			LogProc("glUniform2uiv({0}, {1}, {2})", location, count, "value");
		}
		

		/// <summary>
		/// Binding for glUniform3d function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void Uniform3(int location, double x, double y, double z) {
			if      (Delegates.pglUniform3d != null)
				Delegates.pglUniform3d(location, x, y, z);
			else
				throw new InvalidOperationException("binding point Uniform3 cannot be found");
			LogProc("glUniform3d({0}, {1}, {2}, {3})", location, x, y, z);
		}

		/// <summary>
		/// Binding for glUniform3dv function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void Uniform3(int location, Int32 count, double[] value) {
			unsafe {
				fixed (double* fp_value = value)
				{
					if      (Delegates.pglUniform3dv != null)
						Delegates.pglUniform3dv(location, count, fp_value);
					else
						throw new InvalidOperationException("binding point Uniform3 cannot be found");
				}
			}
			LogProc("glUniform3dv({0}, {1}, {2})", location, count, value);
		}

		/// <summary>
		/// Binding for glUniform3dv function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void Uniform3(int location, Int32 count, double* value) {
			unsafe {
				if      (Delegates.pglUniform3dv != null)
					Delegates.pglUniform3dv(location, count, value);
				else
					throw new InvalidOperationException("binding point Uniform3 cannot be found");
			}
			LogProc("glUniform3dv({0}, {1}, {2})", location, count, "value");
		}
		

		/// <summary>
		/// Binding for glUniform3f function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v0">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="v1">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="v2">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void Uniform3(int location, float v0, float v1, float v2) {
			if      (Delegates.pglUniform3f != null)
				Delegates.pglUniform3f(location, v0, v1, v2);
			else
				throw new InvalidOperationException("binding point Uniform3 cannot be found");
			LogProc("glUniform3f({0}, {1}, {2}, {3})", location, v0, v1, v2);
		}

		/// <summary>
		/// Binding for glUniform3fv function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void Uniform3(int location, Int32 count, float[] value) {
			unsafe {
				fixed (float* fp_value = value)
				{
					if      (Delegates.pglUniform3fv != null)
						Delegates.pglUniform3fv(location, count, fp_value);
					else
						throw new InvalidOperationException("binding point Uniform3 cannot be found");
				}
			}
			LogProc("glUniform3fv({0}, {1}, {2})", location, count, value);
		}

		/// <summary>
		/// Binding for glUniform3fv function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void Uniform3(int location, Int32 count, float* value) {
			unsafe {
				if      (Delegates.pglUniform3fv != null)
					Delegates.pglUniform3fv(location, count, value);
				else
					throw new InvalidOperationException("binding point Uniform3 cannot be found");
			}
			LogProc("glUniform3fv({0}, {1}, {2})", location, count, "value");
		}
		

		/// <summary>
		/// Binding for glUniform3i function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v0">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v1">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v2">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void Uniform3(int location, int v0, int v1, int v2) {
			if      (Delegates.pglUniform3i != null)
				Delegates.pglUniform3i(location, v0, v1, v2);
			else
				throw new InvalidOperationException("binding point Uniform3 cannot be found");
			LogProc("glUniform3i({0}, {1}, {2}, {3})", location, v0, v1, v2);
		}

		/// <summary>
		/// Binding for glUniform3iv function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void Uniform3(int location, Int32 count, int[] value) {
			unsafe {
				fixed (int* fp_value = value)
				{
					if      (Delegates.pglUniform3iv != null)
						Delegates.pglUniform3iv(location, count, fp_value);
					else
						throw new InvalidOperationException("binding point Uniform3 cannot be found");
				}
			}
			LogProc("glUniform3iv({0}, {1}, {2})", location, count, value);
		}

		/// <summary>
		/// Binding for glUniform3iv function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void Uniform3(int location, Int32 count, int* value) {
			unsafe {
				if      (Delegates.pglUniform3iv != null)
					Delegates.pglUniform3iv(location, count, value);
				else
					throw new InvalidOperationException("binding point Uniform3 cannot be found");
			}
			LogProc("glUniform3iv({0}, {1}, {2})", location, count, "value");
		}
		

		/// <summary>
		/// Binding for glUniform3ui function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v0">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v1">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v2">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void Uniform3(int location, UInt32 v0, UInt32 v1, UInt32 v2) {
			if      (Delegates.pglUniform3ui != null)
				Delegates.pglUniform3ui(location, v0, v1, v2);
			else
				throw new InvalidOperationException("binding point Uniform3 cannot be found");
			LogProc("glUniform3ui({0}, {1}, {2}, {3})", location, v0, v1, v2);
		}

		/// <summary>
		/// Binding for glUniform3uiv function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void Uniform3(int location, Int32 count, UInt32[] value) {
			unsafe {
				fixed (UInt32* fp_value = value)
				{
					if      (Delegates.pglUniform3uiv != null)
						Delegates.pglUniform3uiv(location, count, fp_value);
					else
						throw new InvalidOperationException("binding point Uniform3 cannot be found");
				}
			}
			LogProc("glUniform3uiv({0}, {1}, {2})", location, count, value);
		}

		/// <summary>
		/// Binding for glUniform3uiv function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void Uniform3(int location, Int32 count, UInt32* value) {
			unsafe {
				if      (Delegates.pglUniform3uiv != null)
					Delegates.pglUniform3uiv(location, count, value);
				else
					throw new InvalidOperationException("binding point Uniform3 cannot be found");
			}
			LogProc("glUniform3uiv({0}, {1}, {2})", location, count, "value");
		}
		

		/// <summary>
		/// Binding for glUniform4d function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="w">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void Uniform4(int location, double x, double y, double z, double w) {
			if      (Delegates.pglUniform4d != null)
				Delegates.pglUniform4d(location, x, y, z, w);
			else
				throw new InvalidOperationException("binding point Uniform4 cannot be found");
			LogProc("glUniform4d({0}, {1}, {2}, {3}, {4})", location, x, y, z, w);
		}

		/// <summary>
		/// Binding for glUniform4dv function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void Uniform4(int location, Int32 count, double[] value) {
			unsafe {
				fixed (double* fp_value = value)
				{
					if      (Delegates.pglUniform4dv != null)
						Delegates.pglUniform4dv(location, count, fp_value);
					else
						throw new InvalidOperationException("binding point Uniform4 cannot be found");
				}
			}
			LogProc("glUniform4dv({0}, {1}, {2})", location, count, value);
		}

		/// <summary>
		/// Binding for glUniform4dv function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void Uniform4(int location, Int32 count, double* value) {
			unsafe {
				if      (Delegates.pglUniform4dv != null)
					Delegates.pglUniform4dv(location, count, value);
				else
					throw new InvalidOperationException("binding point Uniform4 cannot be found");
			}
			LogProc("glUniform4dv({0}, {1}, {2})", location, count, "value");
		}
		

		/// <summary>
		/// Binding for glUniform4f function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v0">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="v1">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="v2">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="v3">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void Uniform4(int location, float v0, float v1, float v2, float v3) {
			if      (Delegates.pglUniform4f != null)
				Delegates.pglUniform4f(location, v0, v1, v2, v3);
			else
				throw new InvalidOperationException("binding point Uniform4 cannot be found");
			LogProc("glUniform4f({0}, {1}, {2}, {3}, {4})", location, v0, v1, v2, v3);
		}

		/// <summary>
		/// Binding for glUniform4fv function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void Uniform4(int location, Int32 count, float[] value) {
			unsafe {
				fixed (float* fp_value = value)
				{
					if      (Delegates.pglUniform4fv != null)
						Delegates.pglUniform4fv(location, count, fp_value);
					else
						throw new InvalidOperationException("binding point Uniform4 cannot be found");
				}
			}
			LogProc("glUniform4fv({0}, {1}, {2})", location, count, value);
		}

		/// <summary>
		/// Binding for glUniform4fv function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void Uniform4(int location, Int32 count, float* value) {
			unsafe {
				if      (Delegates.pglUniform4fv != null)
					Delegates.pglUniform4fv(location, count, value);
				else
					throw new InvalidOperationException("binding point Uniform4 cannot be found");
			}
			LogProc("glUniform4fv({0}, {1}, {2})", location, count, "value");
		}
		

		/// <summary>
		/// Binding for glUniform4i function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v0">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v1">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v2">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v3">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void Uniform4(int location, int v0, int v1, int v2, int v3) {
			if      (Delegates.pglUniform4i != null)
				Delegates.pglUniform4i(location, v0, v1, v2, v3);
			else
				throw new InvalidOperationException("binding point Uniform4 cannot be found");
			LogProc("glUniform4i({0}, {1}, {2}, {3}, {4})", location, v0, v1, v2, v3);
		}

		/// <summary>
		/// Binding for glUniform4iv function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void Uniform4(int location, Int32 count, int[] value) {
			unsafe {
				fixed (int* fp_value = value)
				{
					if      (Delegates.pglUniform4iv != null)
						Delegates.pglUniform4iv(location, count, fp_value);
					else
						throw new InvalidOperationException("binding point Uniform4 cannot be found");
				}
			}
			LogProc("glUniform4iv({0}, {1}, {2})", location, count, value);
		}

		/// <summary>
		/// Binding for glUniform4iv function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void Uniform4(int location, Int32 count, int* value) {
			unsafe {
				if      (Delegates.pglUniform4iv != null)
					Delegates.pglUniform4iv(location, count, value);
				else
					throw new InvalidOperationException("binding point Uniform4 cannot be found");
			}
			LogProc("glUniform4iv({0}, {1}, {2})", location, count, "value");
		}
		

		/// <summary>
		/// Binding for glUniform4ui function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v0">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v1">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v2">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v3">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void Uniform4(int location, UInt32 v0, UInt32 v1, UInt32 v2, UInt32 v3) {
			if      (Delegates.pglUniform4ui != null)
				Delegates.pglUniform4ui(location, v0, v1, v2, v3);
			else
				throw new InvalidOperationException("binding point Uniform4 cannot be found");
			LogProc("glUniform4ui({0}, {1}, {2}, {3}, {4})", location, v0, v1, v2, v3);
		}

		/// <summary>
		/// Binding for glUniform4uiv function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void Uniform4(int location, Int32 count, UInt32[] value) {
			unsafe {
				fixed (UInt32* fp_value = value)
				{
					if      (Delegates.pglUniform4uiv != null)
						Delegates.pglUniform4uiv(location, count, fp_value);
					else
						throw new InvalidOperationException("binding point Uniform4 cannot be found");
				}
			}
			LogProc("glUniform4uiv({0}, {1}, {2})", location, count, value);
		}

		/// <summary>
		/// Binding for glUniform4uiv function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void Uniform4(int location, Int32 count, UInt32* value) {
			unsafe {
				if      (Delegates.pglUniform4uiv != null)
					Delegates.pglUniform4uiv(location, count, value);
				else
					throw new InvalidOperationException("binding point Uniform4 cannot be found");
			}
			LogProc("glUniform4uiv({0}, {1}, {2})", location, count, "value");
		}
		

		/// <summary>
		/// Binding for glUniformBlockBinding function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="uniformBlockIndex">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="uniformBlockBinding">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void UniformBlockBinding(UInt32 program, UInt32 uniformBlockIndex, UInt32 uniformBlockBinding) {
			if      (Delegates.pglUniformBlockBinding != null)
				Delegates.pglUniformBlockBinding(program, uniformBlockIndex, uniformBlockBinding);
			else
				throw new InvalidOperationException("binding point UniformBlockBinding cannot be found");
			LogProc("glUniformBlockBinding({0}, {1}, {2})", program, uniformBlockIndex, uniformBlockBinding);
		}

		/// <summary>
		/// Binding for glUniformMatrix2dv function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void UniformMatrix2(int location, Int32 count, bool transpose, double[] value) {
			unsafe {
				fixed (double* fp_value = value)
				{
					if      (Delegates.pglUniformMatrix2dv != null)
						Delegates.pglUniformMatrix2dv(location, count, transpose, fp_value);
					else
						throw new InvalidOperationException("binding point UniformMatrix2 cannot be found");
				}
			}
			LogProc("glUniformMatrix2dv({0}, {1}, {2}, {3})", location, count, transpose, value);
		}

		/// <summary>
		/// Binding for glUniformMatrix2dv function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void UniformMatrix2(int location, Int32 count, bool transpose, double* value) {
			unsafe {
				if      (Delegates.pglUniformMatrix2dv != null)
					Delegates.pglUniformMatrix2dv(location, count, transpose, value);
				else
					throw new InvalidOperationException("binding point UniformMatrix2 cannot be found");
			}
			LogProc("glUniformMatrix2dv({0}, {1}, {2}, {3})", location, count, transpose, "value");
		}
		

		/// <summary>
		/// Binding for glUniformMatrix2fv function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void UniformMatrix2(int location, Int32 count, bool transpose, float[] value) {
			unsafe {
				fixed (float* fp_value = value)
				{
					if      (Delegates.pglUniformMatrix2fv != null)
						Delegates.pglUniformMatrix2fv(location, count, transpose, fp_value);
					else
						throw new InvalidOperationException("binding point UniformMatrix2 cannot be found");
				}
			}
			LogProc("glUniformMatrix2fv({0}, {1}, {2}, {3})", location, count, transpose, value);
		}

		/// <summary>
		/// Binding for glUniformMatrix2fv function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void UniformMatrix2(int location, Int32 count, bool transpose, float* value) {
			unsafe {
				if      (Delegates.pglUniformMatrix2fv != null)
					Delegates.pglUniformMatrix2fv(location, count, transpose, value);
				else
					throw new InvalidOperationException("binding point UniformMatrix2 cannot be found");
			}
			LogProc("glUniformMatrix2fv({0}, {1}, {2}, {3})", location, count, transpose, "value");
		}
		

		/// <summary>
		/// Binding for glUniformMatrix2x3dv function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void UniformMatrix2x3(int location, Int32 count, bool transpose, double[] value) {
			unsafe {
				fixed (double* fp_value = value)
				{
					if      (Delegates.pglUniformMatrix2x3dv != null)
						Delegates.pglUniformMatrix2x3dv(location, count, transpose, fp_value);
					else
						throw new InvalidOperationException("binding point UniformMatrix2x3 cannot be found");
				}
			}
			LogProc("glUniformMatrix2x3dv({0}, {1}, {2}, {3})", location, count, transpose, value);
		}

		/// <summary>
		/// Binding for glUniformMatrix2x3dv function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void UniformMatrix2x3(int location, Int32 count, bool transpose, double* value) {
			unsafe {
				if      (Delegates.pglUniformMatrix2x3dv != null)
					Delegates.pglUniformMatrix2x3dv(location, count, transpose, value);
				else
					throw new InvalidOperationException("binding point UniformMatrix2x3 cannot be found");
			}
			LogProc("glUniformMatrix2x3dv({0}, {1}, {2}, {3})", location, count, transpose, "value");
		}
		

		/// <summary>
		/// Binding for glUniformMatrix2x3fv function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.1
		public static void UniformMatrix2x3(int location, Int32 count, bool transpose, float[] value) {
			unsafe {
				fixed (float* fp_value = value)
				{
					if      (Delegates.pglUniformMatrix2x3fv != null)
						Delegates.pglUniformMatrix2x3fv(location, count, transpose, fp_value);
					else
						throw new InvalidOperationException("binding point UniformMatrix2x3 cannot be found");
				}
			}
			LogProc("glUniformMatrix2x3fv({0}, {1}, {2}, {3})", location, count, transpose, value);
		}

		/// <summary>
		/// Binding for glUniformMatrix2x3fv function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.1
		public static void UniformMatrix2x3(int location, Int32 count, bool transpose, float* value) {
			unsafe {
				if      (Delegates.pglUniformMatrix2x3fv != null)
					Delegates.pglUniformMatrix2x3fv(location, count, transpose, value);
				else
					throw new InvalidOperationException("binding point UniformMatrix2x3 cannot be found");
			}
			LogProc("glUniformMatrix2x3fv({0}, {1}, {2}, {3})", location, count, transpose, "value");
		}
		

		/// <summary>
		/// Binding for glUniformMatrix2x4dv function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void UniformMatrix2x4(int location, Int32 count, bool transpose, double[] value) {
			unsafe {
				fixed (double* fp_value = value)
				{
					if      (Delegates.pglUniformMatrix2x4dv != null)
						Delegates.pglUniformMatrix2x4dv(location, count, transpose, fp_value);
					else
						throw new InvalidOperationException("binding point UniformMatrix2x4 cannot be found");
				}
			}
			LogProc("glUniformMatrix2x4dv({0}, {1}, {2}, {3})", location, count, transpose, value);
		}

		/// <summary>
		/// Binding for glUniformMatrix2x4dv function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void UniformMatrix2x4(int location, Int32 count, bool transpose, double* value) {
			unsafe {
				if      (Delegates.pglUniformMatrix2x4dv != null)
					Delegates.pglUniformMatrix2x4dv(location, count, transpose, value);
				else
					throw new InvalidOperationException("binding point UniformMatrix2x4 cannot be found");
			}
			LogProc("glUniformMatrix2x4dv({0}, {1}, {2}, {3})", location, count, transpose, "value");
		}
		

		/// <summary>
		/// Binding for glUniformMatrix2x4fv function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.1
		public static void UniformMatrix2x4(int location, Int32 count, bool transpose, float[] value) {
			unsafe {
				fixed (float* fp_value = value)
				{
					if      (Delegates.pglUniformMatrix2x4fv != null)
						Delegates.pglUniformMatrix2x4fv(location, count, transpose, fp_value);
					else
						throw new InvalidOperationException("binding point UniformMatrix2x4 cannot be found");
				}
			}
			LogProc("glUniformMatrix2x4fv({0}, {1}, {2}, {3})", location, count, transpose, value);
		}

		/// <summary>
		/// Binding for glUniformMatrix2x4fv function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.1
		public static void UniformMatrix2x4(int location, Int32 count, bool transpose, float* value) {
			unsafe {
				if      (Delegates.pglUniformMatrix2x4fv != null)
					Delegates.pglUniformMatrix2x4fv(location, count, transpose, value);
				else
					throw new InvalidOperationException("binding point UniformMatrix2x4 cannot be found");
			}
			LogProc("glUniformMatrix2x4fv({0}, {1}, {2}, {3})", location, count, transpose, "value");
		}
		

		/// <summary>
		/// Binding for glUniformMatrix3dv function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void UniformMatrix3(int location, Int32 count, bool transpose, double[] value) {
			unsafe {
				fixed (double* fp_value = value)
				{
					if      (Delegates.pglUniformMatrix3dv != null)
						Delegates.pglUniformMatrix3dv(location, count, transpose, fp_value);
					else
						throw new InvalidOperationException("binding point UniformMatrix3 cannot be found");
				}
			}
			LogProc("glUniformMatrix3dv({0}, {1}, {2}, {3})", location, count, transpose, value);
		}

		/// <summary>
		/// Binding for glUniformMatrix3dv function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void UniformMatrix3(int location, Int32 count, bool transpose, double* value) {
			unsafe {
				if      (Delegates.pglUniformMatrix3dv != null)
					Delegates.pglUniformMatrix3dv(location, count, transpose, value);
				else
					throw new InvalidOperationException("binding point UniformMatrix3 cannot be found");
			}
			LogProc("glUniformMatrix3dv({0}, {1}, {2}, {3})", location, count, transpose, "value");
		}
		

		/// <summary>
		/// Binding for glUniformMatrix3fv function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void UniformMatrix3(int location, Int32 count, bool transpose, float[] value) {
			unsafe {
				fixed (float* fp_value = value)
				{
					if      (Delegates.pglUniformMatrix3fv != null)
						Delegates.pglUniformMatrix3fv(location, count, transpose, fp_value);
					else
						throw new InvalidOperationException("binding point UniformMatrix3 cannot be found");
				}
			}
			LogProc("glUniformMatrix3fv({0}, {1}, {2}, {3})", location, count, transpose, value);
		}

		/// <summary>
		/// Binding for glUniformMatrix3fv function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void UniformMatrix3(int location, Int32 count, bool transpose, float* value) {
			unsafe {
				if      (Delegates.pglUniformMatrix3fv != null)
					Delegates.pglUniformMatrix3fv(location, count, transpose, value);
				else
					throw new InvalidOperationException("binding point UniformMatrix3 cannot be found");
			}
			LogProc("glUniformMatrix3fv({0}, {1}, {2}, {3})", location, count, transpose, "value");
		}
		

		/// <summary>
		/// Binding for glUniformMatrix3x2dv function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void UniformMatrix3x2(int location, Int32 count, bool transpose, double[] value) {
			unsafe {
				fixed (double* fp_value = value)
				{
					if      (Delegates.pglUniformMatrix3x2dv != null)
						Delegates.pglUniformMatrix3x2dv(location, count, transpose, fp_value);
					else
						throw new InvalidOperationException("binding point UniformMatrix3x2 cannot be found");
				}
			}
			LogProc("glUniformMatrix3x2dv({0}, {1}, {2}, {3})", location, count, transpose, value);
		}

		/// <summary>
		/// Binding for glUniformMatrix3x2dv function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void UniformMatrix3x2(int location, Int32 count, bool transpose, double* value) {
			unsafe {
				if      (Delegates.pglUniformMatrix3x2dv != null)
					Delegates.pglUniformMatrix3x2dv(location, count, transpose, value);
				else
					throw new InvalidOperationException("binding point UniformMatrix3x2 cannot be found");
			}
			LogProc("glUniformMatrix3x2dv({0}, {1}, {2}, {3})", location, count, transpose, "value");
		}
		

		/// <summary>
		/// Binding for glUniformMatrix3x2fv function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.1
		public static void UniformMatrix3x2(int location, Int32 count, bool transpose, float[] value) {
			unsafe {
				fixed (float* fp_value = value)
				{
					if      (Delegates.pglUniformMatrix3x2fv != null)
						Delegates.pglUniformMatrix3x2fv(location, count, transpose, fp_value);
					else
						throw new InvalidOperationException("binding point UniformMatrix3x2 cannot be found");
				}
			}
			LogProc("glUniformMatrix3x2fv({0}, {1}, {2}, {3})", location, count, transpose, value);
		}

		/// <summary>
		/// Binding for glUniformMatrix3x2fv function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.1
		public static void UniformMatrix3x2(int location, Int32 count, bool transpose, float* value) {
			unsafe {
				if      (Delegates.pglUniformMatrix3x2fv != null)
					Delegates.pglUniformMatrix3x2fv(location, count, transpose, value);
				else
					throw new InvalidOperationException("binding point UniformMatrix3x2 cannot be found");
			}
			LogProc("glUniformMatrix3x2fv({0}, {1}, {2}, {3})", location, count, transpose, "value");
		}
		

		/// <summary>
		/// Binding for glUniformMatrix3x4dv function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void UniformMatrix3x4(int location, Int32 count, bool transpose, double[] value) {
			unsafe {
				fixed (double* fp_value = value)
				{
					if      (Delegates.pglUniformMatrix3x4dv != null)
						Delegates.pglUniformMatrix3x4dv(location, count, transpose, fp_value);
					else
						throw new InvalidOperationException("binding point UniformMatrix3x4 cannot be found");
				}
			}
			LogProc("glUniformMatrix3x4dv({0}, {1}, {2}, {3})", location, count, transpose, value);
		}

		/// <summary>
		/// Binding for glUniformMatrix3x4dv function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void UniformMatrix3x4(int location, Int32 count, bool transpose, double* value) {
			unsafe {
				if      (Delegates.pglUniformMatrix3x4dv != null)
					Delegates.pglUniformMatrix3x4dv(location, count, transpose, value);
				else
					throw new InvalidOperationException("binding point UniformMatrix3x4 cannot be found");
			}
			LogProc("glUniformMatrix3x4dv({0}, {1}, {2}, {3})", location, count, transpose, "value");
		}
		

		/// <summary>
		/// Binding for glUniformMatrix3x4fv function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.1
		public static void UniformMatrix3x4(int location, Int32 count, bool transpose, float[] value) {
			unsafe {
				fixed (float* fp_value = value)
				{
					if      (Delegates.pglUniformMatrix3x4fv != null)
						Delegates.pglUniformMatrix3x4fv(location, count, transpose, fp_value);
					else
						throw new InvalidOperationException("binding point UniformMatrix3x4 cannot be found");
				}
			}
			LogProc("glUniformMatrix3x4fv({0}, {1}, {2}, {3})", location, count, transpose, value);
		}

		/// <summary>
		/// Binding for glUniformMatrix3x4fv function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.1
		public static void UniformMatrix3x4(int location, Int32 count, bool transpose, float* value) {
			unsafe {
				if      (Delegates.pglUniformMatrix3x4fv != null)
					Delegates.pglUniformMatrix3x4fv(location, count, transpose, value);
				else
					throw new InvalidOperationException("binding point UniformMatrix3x4 cannot be found");
			}
			LogProc("glUniformMatrix3x4fv({0}, {1}, {2}, {3})", location, count, transpose, "value");
		}
		

		/// <summary>
		/// Binding for glUniformMatrix4dv function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void UniformMatrix4(int location, Int32 count, bool transpose, double[] value) {
			unsafe {
				fixed (double* fp_value = value)
				{
					if      (Delegates.pglUniformMatrix4dv != null)
						Delegates.pglUniformMatrix4dv(location, count, transpose, fp_value);
					else
						throw new InvalidOperationException("binding point UniformMatrix4 cannot be found");
				}
			}
			LogProc("glUniformMatrix4dv({0}, {1}, {2}, {3})", location, count, transpose, value);
		}

		/// <summary>
		/// Binding for glUniformMatrix4dv function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void UniformMatrix4(int location, Int32 count, bool transpose, double* value) {
			unsafe {
				if      (Delegates.pglUniformMatrix4dv != null)
					Delegates.pglUniformMatrix4dv(location, count, transpose, value);
				else
					throw new InvalidOperationException("binding point UniformMatrix4 cannot be found");
			}
			LogProc("glUniformMatrix4dv({0}, {1}, {2}, {3})", location, count, transpose, "value");
		}
		

		/// <summary>
		/// Binding for glUniformMatrix4fv function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void UniformMatrix4(int location, Int32 count, bool transpose, float[] value) {
			unsafe {
				fixed (float* fp_value = value)
				{
					if      (Delegates.pglUniformMatrix4fv != null)
						Delegates.pglUniformMatrix4fv(location, count, transpose, fp_value);
					else
						throw new InvalidOperationException("binding point UniformMatrix4 cannot be found");
				}
			}
			LogProc("glUniformMatrix4fv({0}, {1}, {2}, {3})", location, count, transpose, value);
		}

		/// <summary>
		/// Binding for glUniformMatrix4fv function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void UniformMatrix4(int location, Int32 count, bool transpose, float* value) {
			unsafe {
				if      (Delegates.pglUniformMatrix4fv != null)
					Delegates.pglUniformMatrix4fv(location, count, transpose, value);
				else
					throw new InvalidOperationException("binding point UniformMatrix4 cannot be found");
			}
			LogProc("glUniformMatrix4fv({0}, {1}, {2}, {3})", location, count, transpose, "value");
		}
		

		/// <summary>
		/// Binding for glUniformMatrix4x2dv function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void UniformMatrix4x2(int location, Int32 count, bool transpose, double[] value) {
			unsafe {
				fixed (double* fp_value = value)
				{
					if      (Delegates.pglUniformMatrix4x2dv != null)
						Delegates.pglUniformMatrix4x2dv(location, count, transpose, fp_value);
					else
						throw new InvalidOperationException("binding point UniformMatrix4x2 cannot be found");
				}
			}
			LogProc("glUniformMatrix4x2dv({0}, {1}, {2}, {3})", location, count, transpose, value);
		}

		/// <summary>
		/// Binding for glUniformMatrix4x2dv function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void UniformMatrix4x2(int location, Int32 count, bool transpose, double* value) {
			unsafe {
				if      (Delegates.pglUniformMatrix4x2dv != null)
					Delegates.pglUniformMatrix4x2dv(location, count, transpose, value);
				else
					throw new InvalidOperationException("binding point UniformMatrix4x2 cannot be found");
			}
			LogProc("glUniformMatrix4x2dv({0}, {1}, {2}, {3})", location, count, transpose, "value");
		}
		

		/// <summary>
		/// Binding for glUniformMatrix4x2fv function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.1
		public static void UniformMatrix4x2(int location, Int32 count, bool transpose, float[] value) {
			unsafe {
				fixed (float* fp_value = value)
				{
					if      (Delegates.pglUniformMatrix4x2fv != null)
						Delegates.pglUniformMatrix4x2fv(location, count, transpose, fp_value);
					else
						throw new InvalidOperationException("binding point UniformMatrix4x2 cannot be found");
				}
			}
			LogProc("glUniformMatrix4x2fv({0}, {1}, {2}, {3})", location, count, transpose, value);
		}

		/// <summary>
		/// Binding for glUniformMatrix4x2fv function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.1
		public static void UniformMatrix4x2(int location, Int32 count, bool transpose, float* value) {
			unsafe {
				if      (Delegates.pglUniformMatrix4x2fv != null)
					Delegates.pglUniformMatrix4x2fv(location, count, transpose, value);
				else
					throw new InvalidOperationException("binding point UniformMatrix4x2 cannot be found");
			}
			LogProc("glUniformMatrix4x2fv({0}, {1}, {2}, {3})", location, count, transpose, "value");
		}
		

		/// <summary>
		/// Binding for glUniformMatrix4x3dv function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void UniformMatrix4x3(int location, Int32 count, bool transpose, double[] value) {
			unsafe {
				fixed (double* fp_value = value)
				{
					if      (Delegates.pglUniformMatrix4x3dv != null)
						Delegates.pglUniformMatrix4x3dv(location, count, transpose, fp_value);
					else
						throw new InvalidOperationException("binding point UniformMatrix4x3 cannot be found");
				}
			}
			LogProc("glUniformMatrix4x3dv({0}, {1}, {2}, {3})", location, count, transpose, value);
		}

		/// <summary>
		/// Binding for glUniformMatrix4x3dv function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void UniformMatrix4x3(int location, Int32 count, bool transpose, double* value) {
			unsafe {
				if      (Delegates.pglUniformMatrix4x3dv != null)
					Delegates.pglUniformMatrix4x3dv(location, count, transpose, value);
				else
					throw new InvalidOperationException("binding point UniformMatrix4x3 cannot be found");
			}
			LogProc("glUniformMatrix4x3dv({0}, {1}, {2}, {3})", location, count, transpose, "value");
		}
		

		/// <summary>
		/// Binding for glUniformMatrix4x3fv function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.1
		public static void UniformMatrix4x3(int location, Int32 count, bool transpose, float[] value) {
			unsafe {
				fixed (float* fp_value = value)
				{
					if      (Delegates.pglUniformMatrix4x3fv != null)
						Delegates.pglUniformMatrix4x3fv(location, count, transpose, fp_value);
					else
						throw new InvalidOperationException("binding point UniformMatrix4x3 cannot be found");
				}
			}
			LogProc("glUniformMatrix4x3fv({0}, {1}, {2}, {3})", location, count, transpose, value);
		}

		/// <summary>
		/// Binding for glUniformMatrix4x3fv function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.1
		public static void UniformMatrix4x3(int location, Int32 count, bool transpose, float* value) {
			unsafe {
				if      (Delegates.pglUniformMatrix4x3fv != null)
					Delegates.pglUniformMatrix4x3fv(location, count, transpose, value);
				else
					throw new InvalidOperationException("binding point UniformMatrix4x3 cannot be found");
			}
			LogProc("glUniformMatrix4x3fv({0}, {1}, {2}, {3})", location, count, transpose, "value");
		}
		

		/// <summary>
		/// Binding for glUniformSubroutinesuiv function.
		/// </summary>
		/// <param name="shadertype">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="indices">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void UniformSubroutines(int shadertype, Int32 count, UInt32[] indices) {
			unsafe {
				fixed (UInt32* fp_indices = indices)
				{
					if      (Delegates.pglUniformSubroutinesuiv != null)
						Delegates.pglUniformSubroutinesuiv(shadertype, count, fp_indices);
					else
						throw new InvalidOperationException("binding point UniformSubroutines cannot be found");
				}
			}
			LogProc("glUniformSubroutinesuiv({0}, {1}, {2})", shadertype, count, indices);
		}

		/// <summary>
		/// Binding for glUniformSubroutinesuiv function.
		/// </summary>
		/// <param name="shadertype">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="indices">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void UniformSubroutines(int shadertype, Int32 count, UInt32* indices) {
			unsafe {
				if      (Delegates.pglUniformSubroutinesuiv != null)
					Delegates.pglUniformSubroutinesuiv(shadertype, count, indices);
				else
					throw new InvalidOperationException("binding point UniformSubroutines cannot be found");
			}
			LogProc("glUniformSubroutinesuiv({0}, {1}, {2})", shadertype, count, "indices");
		}
		

		/// <summary>
		/// Binding for glUnmapBuffer function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.5
		public static bool UnmapBuffer(int target) {
			bool retvalue;
			if      (Delegates.pglUnmapBuffer != null)
				retvalue = (Delegates.pglUnmapBuffer(target));
			else
				throw new InvalidOperationException("binding point UnmapBuffer cannot be found");
			LogProc("glUnmapBuffer({0}) = {1}", target, retvalue);
			return (retvalue);
		}

		/// <summary>
		/// Binding for glUseProgram function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void UseProgram(UInt32 program) {
			if      (Delegates.pglUseProgram != null)
				Delegates.pglUseProgram(program);
			else
				throw new InvalidOperationException("binding point UseProgram cannot be found");
			LogProc("glUseProgram({0})", program);
		}

		/// <summary>
		/// Binding for glUseProgramStages function.
		/// </summary>
		/// <param name="pipeline">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="stages">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void UseProgramStage(UInt32 pipeline, uint stages, UInt32 program) {
			if      (Delegates.pglUseProgramStages != null)
				Delegates.pglUseProgramStages(pipeline, stages, program);
			else
				throw new InvalidOperationException("binding point UseProgramStage cannot be found");
			LogProc("glUseProgramStages({0}, {1}, {2})", pipeline, stages, program);
		}

		/// <summary>
		/// Binding for glValidateProgram function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void ValidateProgram(UInt32 program) {
			if      (Delegates.pglValidateProgram != null)
				Delegates.pglValidateProgram(program);
			else
				throw new InvalidOperationException("binding point ValidateProgram cannot be found");
			LogProc("glValidateProgram({0})", program);
		}

		/// <summary>
		/// Binding for glValidateProgramPipeline function.
		/// </summary>
		/// <param name="pipeline">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ValidateProgramPipeline(UInt32 pipeline) {
			if      (Delegates.pglValidateProgramPipeline != null)
				Delegates.pglValidateProgramPipeline(pipeline);
			else
				throw new InvalidOperationException("binding point ValidateProgramPipeline cannot be found");
			LogProc("glValidateProgramPipeline({0})", pipeline);
		}

		/// <summary>
		/// Binding for glVertex2d function.
		/// </summary>
		/// <param name="x">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Vertex2(double x, double y) {
			if      (Delegates.pglVertex2d != null)
				Delegates.pglVertex2d(x, y);
			else
				throw new InvalidOperationException("binding point Vertex2 cannot be found");
			LogProc("glVertex2d({0}, {1})", x, y);
		}

		/// <summary>
		/// Binding for glVertex2dv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Vertex2(double[] v) {
			unsafe {
				fixed (double* fp_v = v)
				{
					if      (Delegates.pglVertex2dv != null)
						Delegates.pglVertex2dv(fp_v);
					else
						throw new InvalidOperationException("binding point Vertex2 cannot be found");
				}
			}
			LogProc("glVertex2dv({0})", v);
		}

		/// <summary>
		/// Binding for glVertex2f function.
		/// </summary>
		/// <param name="x">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Vertex2(float x, float y) {
			if      (Delegates.pglVertex2f != null)
				Delegates.pglVertex2f(x, y);
			else
				throw new InvalidOperationException("binding point Vertex2 cannot be found");
			LogProc("glVertex2f({0}, {1})", x, y);
		}

		/// <summary>
		/// Binding for glVertex2fv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Vertex2(float[] v) {
			unsafe {
				fixed (float* fp_v = v)
				{
					if      (Delegates.pglVertex2fv != null)
						Delegates.pglVertex2fv(fp_v);
					else
						throw new InvalidOperationException("binding point Vertex2 cannot be found");
				}
			}
			LogProc("glVertex2fv({0})", v);
		}

		/// <summary>
		/// Binding for glVertex2i function.
		/// </summary>
		/// <param name="x">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Vertex2(int x, int y) {
			if      (Delegates.pglVertex2i != null)
				Delegates.pglVertex2i(x, y);
			else
				throw new InvalidOperationException("binding point Vertex2 cannot be found");
			LogProc("glVertex2i({0}, {1})", x, y);
		}

		/// <summary>
		/// Binding for glVertex2iv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Vertex2(int[] v) {
			unsafe {
				fixed (int* fp_v = v)
				{
					if      (Delegates.pglVertex2iv != null)
						Delegates.pglVertex2iv(fp_v);
					else
						throw new InvalidOperationException("binding point Vertex2 cannot be found");
				}
			}
			LogProc("glVertex2iv({0})", v);
		}

		/// <summary>
		/// Binding for glVertex2s function.
		/// </summary>
		/// <param name="x">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Vertex2(Int16 x, Int16 y) {
			if      (Delegates.pglVertex2s != null)
				Delegates.pglVertex2s(x, y);
			else
				throw new InvalidOperationException("binding point Vertex2 cannot be found");
			LogProc("glVertex2s({0}, {1})", x, y);
		}

		/// <summary>
		/// Binding for glVertex2sv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Int16*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Vertex2(Int16[] v) {
			unsafe {
				fixed (Int16* fp_v = v)
				{
					if      (Delegates.pglVertex2sv != null)
						Delegates.pglVertex2sv(fp_v);
					else
						throw new InvalidOperationException("binding point Vertex2 cannot be found");
				}
			}
			LogProc("glVertex2sv({0})", v);
		}

		/// <summary>
		/// Binding for glVertex3d function.
		/// </summary>
		/// <param name="x">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Vertex3(double x, double y, double z) {
			if      (Delegates.pglVertex3d != null)
				Delegates.pglVertex3d(x, y, z);
			else
				throw new InvalidOperationException("binding point Vertex3 cannot be found");
			LogProc("glVertex3d({0}, {1}, {2})", x, y, z);
		}

		/// <summary>
		/// Binding for glVertex3dv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Vertex3(double[] v) {
			unsafe {
				fixed (double* fp_v = v)
				{
					if      (Delegates.pglVertex3dv != null)
						Delegates.pglVertex3dv(fp_v);
					else
						throw new InvalidOperationException("binding point Vertex3 cannot be found");
				}
			}
			LogProc("glVertex3dv({0})", v);
		}

		/// <summary>
		/// Binding for glVertex3f function.
		/// </summary>
		/// <param name="x">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Vertex3(float x, float y, float z) {
			if      (Delegates.pglVertex3f != null)
				Delegates.pglVertex3f(x, y, z);
			else
				throw new InvalidOperationException("binding point Vertex3 cannot be found");
			LogProc("glVertex3f({0}, {1}, {2})", x, y, z);
		}

		/// <summary>
		/// Binding for glVertex3fv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Vertex3(float[] v) {
			unsafe {
				fixed (float* fp_v = v)
				{
					if      (Delegates.pglVertex3fv != null)
						Delegates.pglVertex3fv(fp_v);
					else
						throw new InvalidOperationException("binding point Vertex3 cannot be found");
				}
			}
			LogProc("glVertex3fv({0})", v);
		}

		/// <summary>
		/// Binding for glVertex3i function.
		/// </summary>
		/// <param name="x">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Vertex3(int x, int y, int z) {
			if      (Delegates.pglVertex3i != null)
				Delegates.pglVertex3i(x, y, z);
			else
				throw new InvalidOperationException("binding point Vertex3 cannot be found");
			LogProc("glVertex3i({0}, {1}, {2})", x, y, z);
		}

		/// <summary>
		/// Binding for glVertex3iv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Vertex3(int[] v) {
			unsafe {
				fixed (int* fp_v = v)
				{
					if      (Delegates.pglVertex3iv != null)
						Delegates.pglVertex3iv(fp_v);
					else
						throw new InvalidOperationException("binding point Vertex3 cannot be found");
				}
			}
			LogProc("glVertex3iv({0})", v);
		}

		/// <summary>
		/// Binding for glVertex3s function.
		/// </summary>
		/// <param name="x">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Vertex3(Int16 x, Int16 y, Int16 z) {
			if      (Delegates.pglVertex3s != null)
				Delegates.pglVertex3s(x, y, z);
			else
				throw new InvalidOperationException("binding point Vertex3 cannot be found");
			LogProc("glVertex3s({0}, {1}, {2})", x, y, z);
		}

		/// <summary>
		/// Binding for glVertex3sv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Int16*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Vertex3(Int16[] v) {
			unsafe {
				fixed (Int16* fp_v = v)
				{
					if      (Delegates.pglVertex3sv != null)
						Delegates.pglVertex3sv(fp_v);
					else
						throw new InvalidOperationException("binding point Vertex3 cannot be found");
				}
			}
			LogProc("glVertex3sv({0})", v);
		}

		/// <summary>
		/// Binding for glVertex4d function.
		/// </summary>
		/// <param name="x">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="w">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Vertex4(double x, double y, double z, double w) {
			if      (Delegates.pglVertex4d != null)
				Delegates.pglVertex4d(x, y, z, w);
			else
				throw new InvalidOperationException("binding point Vertex4 cannot be found");
			LogProc("glVertex4d({0}, {1}, {2}, {3})", x, y, z, w);
		}

		/// <summary>
		/// Binding for glVertex4dv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Vertex4(double[] v) {
			unsafe {
				fixed (double* fp_v = v)
				{
					if      (Delegates.pglVertex4dv != null)
						Delegates.pglVertex4dv(fp_v);
					else
						throw new InvalidOperationException("binding point Vertex4 cannot be found");
				}
			}
			LogProc("glVertex4dv({0})", v);
		}

		/// <summary>
		/// Binding for glVertex4f function.
		/// </summary>
		/// <param name="x">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="w">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Vertex4(float x, float y, float z, float w) {
			if      (Delegates.pglVertex4f != null)
				Delegates.pglVertex4f(x, y, z, w);
			else
				throw new InvalidOperationException("binding point Vertex4 cannot be found");
			LogProc("glVertex4f({0}, {1}, {2}, {3})", x, y, z, w);
		}

		/// <summary>
		/// Binding for glVertex4fv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Vertex4(float[] v) {
			unsafe {
				fixed (float* fp_v = v)
				{
					if      (Delegates.pglVertex4fv != null)
						Delegates.pglVertex4fv(fp_v);
					else
						throw new InvalidOperationException("binding point Vertex4 cannot be found");
				}
			}
			LogProc("glVertex4fv({0})", v);
		}

		/// <summary>
		/// Binding for glVertex4i function.
		/// </summary>
		/// <param name="x">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="w">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Vertex4(int x, int y, int z, int w) {
			if      (Delegates.pglVertex4i != null)
				Delegates.pglVertex4i(x, y, z, w);
			else
				throw new InvalidOperationException("binding point Vertex4 cannot be found");
			LogProc("glVertex4i({0}, {1}, {2}, {3})", x, y, z, w);
		}

		/// <summary>
		/// Binding for glVertex4iv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Vertex4(int[] v) {
			unsafe {
				fixed (int* fp_v = v)
				{
					if      (Delegates.pglVertex4iv != null)
						Delegates.pglVertex4iv(fp_v);
					else
						throw new InvalidOperationException("binding point Vertex4 cannot be found");
				}
			}
			LogProc("glVertex4iv({0})", v);
		}

		/// <summary>
		/// Binding for glVertex4s function.
		/// </summary>
		/// <param name="x">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// <param name="w">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Vertex4(Int16 x, Int16 y, Int16 z, Int16 w) {
			if      (Delegates.pglVertex4s != null)
				Delegates.pglVertex4s(x, y, z, w);
			else
				throw new InvalidOperationException("binding point Vertex4 cannot be found");
			LogProc("glVertex4s({0}, {1}, {2}, {3})", x, y, z, w);
		}

		/// <summary>
		/// Binding for glVertex4sv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Int16*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		/// @deprecated
		public static void Vertex4(Int16[] v) {
			unsafe {
				fixed (Int16* fp_v = v)
				{
					if      (Delegates.pglVertex4sv != null)
						Delegates.pglVertex4sv(fp_v);
					else
						throw new InvalidOperationException("binding point Vertex4 cannot be found");
				}
			}
			LogProc("glVertex4sv({0})", v);
		}

		/// <summary>
		/// Binding for glVertexAttrib1d function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		/// @deprecated
		public static void VertexAttrib1(UInt32 index, double x) {
			if      (Delegates.pglVertexAttrib1d != null)
				Delegates.pglVertexAttrib1d(index, x);
			else
				throw new InvalidOperationException("binding point VertexAttrib1 cannot be found");
			LogProc("glVertexAttrib1d({0}, {1})", index, x);
		}

		/// <summary>
		/// Binding for glVertexAttrib1dv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		/// @deprecated
		public static void VertexAttrib1(UInt32 index, double[] v) {
			unsafe {
				fixed (double* fp_v = v)
				{
					if      (Delegates.pglVertexAttrib1dv != null)
						Delegates.pglVertexAttrib1dv(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttrib1 cannot be found");
				}
			}
			LogProc("glVertexAttrib1dv({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttrib1dv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		/// @deprecated
		public static void VertexAttrib1(UInt32 index, double* v) {
			unsafe {
				if      (Delegates.pglVertexAttrib1dv != null)
					Delegates.pglVertexAttrib1dv(index, v);
				else
					throw new InvalidOperationException("binding point VertexAttrib1 cannot be found");
			}
			LogProc("glVertexAttrib1dv({0}, {1})", index, "v");
		}
		

		/// <summary>
		/// Binding for glVertexAttrib1f function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		/// @deprecated
		public static void VertexAttrib1(UInt32 index, float x) {
			if      (Delegates.pglVertexAttrib1f != null)
				Delegates.pglVertexAttrib1f(index, x);
			else
				throw new InvalidOperationException("binding point VertexAttrib1 cannot be found");
			LogProc("glVertexAttrib1f({0}, {1})", index, x);
		}

		/// <summary>
		/// Binding for glVertexAttrib1fv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		/// @deprecated
		public static void VertexAttrib1(UInt32 index, float[] v) {
			unsafe {
				fixed (float* fp_v = v)
				{
					if      (Delegates.pglVertexAttrib1fv != null)
						Delegates.pglVertexAttrib1fv(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttrib1 cannot be found");
				}
			}
			LogProc("glVertexAttrib1fv({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttrib1fv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		/// @deprecated
		public static void VertexAttrib1(UInt32 index, float* v) {
			unsafe {
				if      (Delegates.pglVertexAttrib1fv != null)
					Delegates.pglVertexAttrib1fv(index, v);
				else
					throw new InvalidOperationException("binding point VertexAttrib1 cannot be found");
			}
			LogProc("glVertexAttrib1fv({0}, {1})", index, "v");
		}
		

		/// <summary>
		/// Binding for glVertexAttrib1s function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		/// @deprecated
		public static void VertexAttrib1(UInt32 index, Int16 x) {
			if      (Delegates.pglVertexAttrib1s != null)
				Delegates.pglVertexAttrib1s(index, x);
			else
				throw new InvalidOperationException("binding point VertexAttrib1 cannot be found");
			LogProc("glVertexAttrib1s({0}, {1})", index, x);
		}

		/// <summary>
		/// Binding for glVertexAttrib1sv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Int16*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		/// @deprecated
		public static void VertexAttrib1(UInt32 index, Int16[] v) {
			unsafe {
				fixed (Int16* fp_v = v)
				{
					if      (Delegates.pglVertexAttrib1sv != null)
						Delegates.pglVertexAttrib1sv(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttrib1 cannot be found");
				}
			}
			LogProc("glVertexAttrib1sv({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttrib2d function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		/// @deprecated
		public static void VertexAttrib2(UInt32 index, double x, double y) {
			if      (Delegates.pglVertexAttrib2d != null)
				Delegates.pglVertexAttrib2d(index, x, y);
			else
				throw new InvalidOperationException("binding point VertexAttrib2 cannot be found");
			LogProc("glVertexAttrib2d({0}, {1}, {2})", index, x, y);
		}

		/// <summary>
		/// Binding for glVertexAttrib2dv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		/// @deprecated
		public static void VertexAttrib2(UInt32 index, double[] v) {
			unsafe {
				fixed (double* fp_v = v)
				{
					if      (Delegates.pglVertexAttrib2dv != null)
						Delegates.pglVertexAttrib2dv(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttrib2 cannot be found");
				}
			}
			LogProc("glVertexAttrib2dv({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttrib2dv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		/// @deprecated
		public static void VertexAttrib2(UInt32 index, double* v) {
			unsafe {
				if      (Delegates.pglVertexAttrib2dv != null)
					Delegates.pglVertexAttrib2dv(index, v);
				else
					throw new InvalidOperationException("binding point VertexAttrib2 cannot be found");
			}
			LogProc("glVertexAttrib2dv({0}, {1})", index, "v");
		}
		

		/// <summary>
		/// Binding for glVertexAttrib2f function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		/// @deprecated
		public static void VertexAttrib2(UInt32 index, float x, float y) {
			if      (Delegates.pglVertexAttrib2f != null)
				Delegates.pglVertexAttrib2f(index, x, y);
			else
				throw new InvalidOperationException("binding point VertexAttrib2 cannot be found");
			LogProc("glVertexAttrib2f({0}, {1}, {2})", index, x, y);
		}

		/// <summary>
		/// Binding for glVertexAttrib2fv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		/// @deprecated
		public static void VertexAttrib2(UInt32 index, float[] v) {
			unsafe {
				fixed (float* fp_v = v)
				{
					if      (Delegates.pglVertexAttrib2fv != null)
						Delegates.pglVertexAttrib2fv(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttrib2 cannot be found");
				}
			}
			LogProc("glVertexAttrib2fv({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttrib2fv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		/// @deprecated
		public static void VertexAttrib2(UInt32 index, float* v) {
			unsafe {
				if      (Delegates.pglVertexAttrib2fv != null)
					Delegates.pglVertexAttrib2fv(index, v);
				else
					throw new InvalidOperationException("binding point VertexAttrib2 cannot be found");
			}
			LogProc("glVertexAttrib2fv({0}, {1})", index, "v");
		}
		

		/// <summary>
		/// Binding for glVertexAttrib2s function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		/// @deprecated
		public static void VertexAttrib2(UInt32 index, Int16 x, Int16 y) {
			if      (Delegates.pglVertexAttrib2s != null)
				Delegates.pglVertexAttrib2s(index, x, y);
			else
				throw new InvalidOperationException("binding point VertexAttrib2 cannot be found");
			LogProc("glVertexAttrib2s({0}, {1}, {2})", index, x, y);
		}

		/// <summary>
		/// Binding for glVertexAttrib2sv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Int16*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		/// @deprecated
		public static void VertexAttrib2(UInt32 index, Int16[] v) {
			unsafe {
				fixed (Int16* fp_v = v)
				{
					if      (Delegates.pglVertexAttrib2sv != null)
						Delegates.pglVertexAttrib2sv(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttrib2 cannot be found");
				}
			}
			LogProc("glVertexAttrib2sv({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttrib3d function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		/// @deprecated
		public static void VertexAttrib3(UInt32 index, double x, double y, double z) {
			if      (Delegates.pglVertexAttrib3d != null)
				Delegates.pglVertexAttrib3d(index, x, y, z);
			else
				throw new InvalidOperationException("binding point VertexAttrib3 cannot be found");
			LogProc("glVertexAttrib3d({0}, {1}, {2}, {3})", index, x, y, z);
		}

		/// <summary>
		/// Binding for glVertexAttrib3dv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		/// @deprecated
		public static void VertexAttrib3(UInt32 index, double[] v) {
			unsafe {
				fixed (double* fp_v = v)
				{
					if      (Delegates.pglVertexAttrib3dv != null)
						Delegates.pglVertexAttrib3dv(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttrib3 cannot be found");
				}
			}
			LogProc("glVertexAttrib3dv({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttrib3dv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		/// @deprecated
		public static void VertexAttrib3(UInt32 index, double* v) {
			unsafe {
				if      (Delegates.pglVertexAttrib3dv != null)
					Delegates.pglVertexAttrib3dv(index, v);
				else
					throw new InvalidOperationException("binding point VertexAttrib3 cannot be found");
			}
			LogProc("glVertexAttrib3dv({0}, {1})", index, "v");
		}
		

		/// <summary>
		/// Binding for glVertexAttrib3f function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		/// @deprecated
		public static void VertexAttrib3(UInt32 index, float x, float y, float z) {
			if      (Delegates.pglVertexAttrib3f != null)
				Delegates.pglVertexAttrib3f(index, x, y, z);
			else
				throw new InvalidOperationException("binding point VertexAttrib3 cannot be found");
			LogProc("glVertexAttrib3f({0}, {1}, {2}, {3})", index, x, y, z);
		}

		/// <summary>
		/// Binding for glVertexAttrib3fv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		/// @deprecated
		public static void VertexAttrib3(UInt32 index, float[] v) {
			unsafe {
				fixed (float* fp_v = v)
				{
					if      (Delegates.pglVertexAttrib3fv != null)
						Delegates.pglVertexAttrib3fv(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttrib3 cannot be found");
				}
			}
			LogProc("glVertexAttrib3fv({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttrib3fv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		/// @deprecated
		public static void VertexAttrib3(UInt32 index, float* v) {
			unsafe {
				if      (Delegates.pglVertexAttrib3fv != null)
					Delegates.pglVertexAttrib3fv(index, v);
				else
					throw new InvalidOperationException("binding point VertexAttrib3 cannot be found");
			}
			LogProc("glVertexAttrib3fv({0}, {1})", index, "v");
		}
		

		/// <summary>
		/// Binding for glVertexAttrib3s function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		/// @deprecated
		public static void VertexAttrib3(UInt32 index, Int16 x, Int16 y, Int16 z) {
			if      (Delegates.pglVertexAttrib3s != null)
				Delegates.pglVertexAttrib3s(index, x, y, z);
			else
				throw new InvalidOperationException("binding point VertexAttrib3 cannot be found");
			LogProc("glVertexAttrib3s({0}, {1}, {2}, {3})", index, x, y, z);
		}

		/// <summary>
		/// Binding for glVertexAttrib3sv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Int16*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		/// @deprecated
		public static void VertexAttrib3(UInt32 index, Int16[] v) {
			unsafe {
				fixed (Int16* fp_v = v)
				{
					if      (Delegates.pglVertexAttrib3sv != null)
						Delegates.pglVertexAttrib3sv(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttrib3 cannot be found");
				}
			}
			LogProc("glVertexAttrib3sv({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttrib4bv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.SByte*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		/// @deprecated
		public static void VertexAttrib4(UInt32 index, sbyte[] v) {
			unsafe {
				fixed (sbyte* fp_v = v)
				{
					if      (Delegates.pglVertexAttrib4bv != null)
						Delegates.pglVertexAttrib4bv(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttrib4 cannot be found");
				}
			}
			LogProc("glVertexAttrib4bv({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttrib4d function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="w">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		/// @deprecated
		public static void VertexAttrib4(UInt32 index, double x, double y, double z, double w) {
			if      (Delegates.pglVertexAttrib4d != null)
				Delegates.pglVertexAttrib4d(index, x, y, z, w);
			else
				throw new InvalidOperationException("binding point VertexAttrib4 cannot be found");
			LogProc("glVertexAttrib4d({0}, {1}, {2}, {3}, {4})", index, x, y, z, w);
		}

		/// <summary>
		/// Binding for glVertexAttrib4dv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		/// @deprecated
		public static void VertexAttrib4(UInt32 index, double[] v) {
			unsafe {
				fixed (double* fp_v = v)
				{
					if      (Delegates.pglVertexAttrib4dv != null)
						Delegates.pglVertexAttrib4dv(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttrib4 cannot be found");
				}
			}
			LogProc("glVertexAttrib4dv({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttrib4dv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		/// @deprecated
		public static void VertexAttrib4(UInt32 index, double* v) {
			unsafe {
				if      (Delegates.pglVertexAttrib4dv != null)
					Delegates.pglVertexAttrib4dv(index, v);
				else
					throw new InvalidOperationException("binding point VertexAttrib4 cannot be found");
			}
			LogProc("glVertexAttrib4dv({0}, {1})", index, "v");
		}
		

		/// <summary>
		/// Binding for glVertexAttrib4f function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="w">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		/// @deprecated
		public static void VertexAttrib4(UInt32 index, float x, float y, float z, float w) {
			if      (Delegates.pglVertexAttrib4f != null)
				Delegates.pglVertexAttrib4f(index, x, y, z, w);
			else
				throw new InvalidOperationException("binding point VertexAttrib4 cannot be found");
			LogProc("glVertexAttrib4f({0}, {1}, {2}, {3}, {4})", index, x, y, z, w);
		}

		/// <summary>
		/// Binding for glVertexAttrib4fv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		/// @deprecated
		public static void VertexAttrib4(UInt32 index, float[] v) {
			unsafe {
				fixed (float* fp_v = v)
				{
					if      (Delegates.pglVertexAttrib4fv != null)
						Delegates.pglVertexAttrib4fv(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttrib4 cannot be found");
				}
			}
			LogProc("glVertexAttrib4fv({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttrib4fv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		/// @deprecated
		public static void VertexAttrib4(UInt32 index, float* v) {
			unsafe {
				if      (Delegates.pglVertexAttrib4fv != null)
					Delegates.pglVertexAttrib4fv(index, v);
				else
					throw new InvalidOperationException("binding point VertexAttrib4 cannot be found");
			}
			LogProc("glVertexAttrib4fv({0}, {1})", index, "v");
		}
		

		/// <summary>
		/// Binding for glVertexAttrib4iv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		/// @deprecated
		public static void VertexAttrib4(UInt32 index, int[] v) {
			unsafe {
				fixed (int* fp_v = v)
				{
					if      (Delegates.pglVertexAttrib4iv != null)
						Delegates.pglVertexAttrib4iv(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttrib4 cannot be found");
				}
			}
			LogProc("glVertexAttrib4iv({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttrib4iv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		/// @deprecated
		public static void VertexAttrib4(UInt32 index, int* v) {
			unsafe {
				if      (Delegates.pglVertexAttrib4iv != null)
					Delegates.pglVertexAttrib4iv(index, v);
				else
					throw new InvalidOperationException("binding point VertexAttrib4 cannot be found");
			}
			LogProc("glVertexAttrib4iv({0}, {1})", index, "v");
		}
		

		/// <summary>
		/// Binding for glVertexAttrib4Nbv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.SByte*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		/// @deprecated
		public static void VertexAttrib4N(UInt32 index, sbyte[] v) {
			unsafe {
				fixed (sbyte* fp_v = v)
				{
					if      (Delegates.pglVertexAttrib4Nbv != null)
						Delegates.pglVertexAttrib4Nbv(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttrib4N cannot be found");
				}
			}
			LogProc("glVertexAttrib4Nbv({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttrib4Niv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		/// @deprecated
		public static void VertexAttrib4N(UInt32 index, int[] v) {
			unsafe {
				fixed (int* fp_v = v)
				{
					if      (Delegates.pglVertexAttrib4Niv != null)
						Delegates.pglVertexAttrib4Niv(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttrib4N cannot be found");
				}
			}
			LogProc("glVertexAttrib4Niv({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttrib4Niv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		/// @deprecated
		public static void VertexAttrib4N(UInt32 index, int* v) {
			unsafe {
				if      (Delegates.pglVertexAttrib4Niv != null)
					Delegates.pglVertexAttrib4Niv(index, v);
				else
					throw new InvalidOperationException("binding point VertexAttrib4N cannot be found");
			}
			LogProc("glVertexAttrib4Niv({0}, {1})", index, "v");
		}
		

		/// <summary>
		/// Binding for glVertexAttrib4Nsv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Int16*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		/// @deprecated
		public static void VertexAttrib4N(UInt32 index, Int16[] v) {
			unsafe {
				fixed (Int16* fp_v = v)
				{
					if      (Delegates.pglVertexAttrib4Nsv != null)
						Delegates.pglVertexAttrib4Nsv(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttrib4N cannot be found");
				}
			}
			LogProc("glVertexAttrib4Nsv({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttrib4Nub function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Byte"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Byte"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.Byte"/>.
		/// </param>
		/// <param name="w">
		/// A <see cref="T:System.Byte"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		/// @deprecated
		public static void VertexAttrib4N(UInt32 index, byte x, byte y, byte z, byte w) {
			if      (Delegates.pglVertexAttrib4Nub != null)
				Delegates.pglVertexAttrib4Nub(index, x, y, z, w);
			else
				throw new InvalidOperationException("binding point VertexAttrib4N cannot be found");
			LogProc("glVertexAttrib4Nub({0}, {1}, {2}, {3}, {4})", index, x, y, z, w);
		}

		/// <summary>
		/// Binding for glVertexAttrib4Nubv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Byte*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		/// @deprecated
		public static void VertexAttrib4N(UInt32 index, byte[] v) {
			unsafe {
				fixed (byte* fp_v = v)
				{
					if      (Delegates.pglVertexAttrib4Nubv != null)
						Delegates.pglVertexAttrib4Nubv(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttrib4N cannot be found");
				}
			}
			LogProc("glVertexAttrib4Nubv({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttrib4Nuiv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		/// @deprecated
		public static void VertexAttrib4N(UInt32 index, UInt32[] v) {
			unsafe {
				fixed (UInt32* fp_v = v)
				{
					if      (Delegates.pglVertexAttrib4Nuiv != null)
						Delegates.pglVertexAttrib4Nuiv(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttrib4N cannot be found");
				}
			}
			LogProc("glVertexAttrib4Nuiv({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttrib4Nuiv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		/// @deprecated
		public static void VertexAttrib4N(UInt32 index, UInt32* v) {
			unsafe {
				if      (Delegates.pglVertexAttrib4Nuiv != null)
					Delegates.pglVertexAttrib4Nuiv(index, v);
				else
					throw new InvalidOperationException("binding point VertexAttrib4N cannot be found");
			}
			LogProc("glVertexAttrib4Nuiv({0}, {1})", index, "v");
		}
		

		/// <summary>
		/// Binding for glVertexAttrib4Nusv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.UInt16*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		/// @deprecated
		public static void VertexAttrib4N(UInt32 index, UInt16[] v) {
			unsafe {
				fixed (UInt16* fp_v = v)
				{
					if      (Delegates.pglVertexAttrib4Nusv != null)
						Delegates.pglVertexAttrib4Nusv(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttrib4N cannot be found");
				}
			}
			LogProc("glVertexAttrib4Nusv({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttrib4s function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// <param name="w">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		/// @deprecated
		public static void VertexAttrib4(UInt32 index, Int16 x, Int16 y, Int16 z, Int16 w) {
			if      (Delegates.pglVertexAttrib4s != null)
				Delegates.pglVertexAttrib4s(index, x, y, z, w);
			else
				throw new InvalidOperationException("binding point VertexAttrib4 cannot be found");
			LogProc("glVertexAttrib4s({0}, {1}, {2}, {3}, {4})", index, x, y, z, w);
		}

		/// <summary>
		/// Binding for glVertexAttrib4sv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Int16*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		/// @deprecated
		public static void VertexAttrib4(UInt32 index, Int16[] v) {
			unsafe {
				fixed (Int16* fp_v = v)
				{
					if      (Delegates.pglVertexAttrib4sv != null)
						Delegates.pglVertexAttrib4sv(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttrib4 cannot be found");
				}
			}
			LogProc("glVertexAttrib4sv({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttrib4ubv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Byte*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		/// @deprecated
		public static void VertexAttrib4ub(UInt32 index, byte[] v) {
			unsafe {
				fixed (byte* fp_v = v)
				{
					if      (Delegates.pglVertexAttrib4ubv != null)
						Delegates.pglVertexAttrib4ubv(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttrib4ub cannot be found");
				}
			}
			LogProc("glVertexAttrib4ubv({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttrib4uiv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		/// @deprecated
		public static void VertexAttrib4(UInt32 index, UInt32[] v) {
			unsafe {
				fixed (UInt32* fp_v = v)
				{
					if      (Delegates.pglVertexAttrib4uiv != null)
						Delegates.pglVertexAttrib4uiv(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttrib4 cannot be found");
				}
			}
			LogProc("glVertexAttrib4uiv({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttrib4uiv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		/// @deprecated
		public static void VertexAttrib4(UInt32 index, UInt32* v) {
			unsafe {
				if      (Delegates.pglVertexAttrib4uiv != null)
					Delegates.pglVertexAttrib4uiv(index, v);
				else
					throw new InvalidOperationException("binding point VertexAttrib4 cannot be found");
			}
			LogProc("glVertexAttrib4uiv({0}, {1})", index, "v");
		}
		

		/// <summary>
		/// Binding for glVertexAttrib4usv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.UInt16*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		/// @deprecated
		public static void VertexAttrib4(UInt32 index, UInt16[] v) {
			unsafe {
				fixed (UInt16* fp_v = v)
				{
					if      (Delegates.pglVertexAttrib4usv != null)
						Delegates.pglVertexAttrib4usv(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttrib4 cannot be found");
				}
			}
			LogProc("glVertexAttrib4usv({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttribDivisor function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="divisor">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void VertexAttribDivisor(UInt32 index, UInt32 divisor) {
			if      (Delegates.pglVertexAttribDivisor != null)
				Delegates.pglVertexAttribDivisor(index, divisor);
			else
				throw new InvalidOperationException("binding point VertexAttribDivisor cannot be found");
			LogProc("glVertexAttribDivisor({0}, {1})", index, divisor);
		}

		/// <summary>
		/// Binding for glVertexAttribI1i function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		/// @deprecated
		public static void VertexAttribI1(UInt32 index, int x) {
			if      (Delegates.pglVertexAttribI1i != null)
				Delegates.pglVertexAttribI1i(index, x);
			else
				throw new InvalidOperationException("binding point VertexAttribI1 cannot be found");
			LogProc("glVertexAttribI1i({0}, {1})", index, x);
		}

		/// <summary>
		/// Binding for glVertexAttribI1iv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		/// @deprecated
		public static void VertexAttribI1(UInt32 index, int[] v) {
			unsafe {
				fixed (int* fp_v = v)
				{
					if      (Delegates.pglVertexAttribI1iv != null)
						Delegates.pglVertexAttribI1iv(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttribI1 cannot be found");
				}
			}
			LogProc("glVertexAttribI1iv({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttribI1iv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		/// @deprecated
		public static void VertexAttribI1(UInt32 index, int* v) {
			unsafe {
				if      (Delegates.pglVertexAttribI1iv != null)
					Delegates.pglVertexAttribI1iv(index, v);
				else
					throw new InvalidOperationException("binding point VertexAttribI1 cannot be found");
			}
			LogProc("glVertexAttribI1iv({0}, {1})", index, "v");
		}
		

		/// <summary>
		/// Binding for glVertexAttribI1ui function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		/// @deprecated
		public static void VertexAttribI1(UInt32 index, UInt32 x) {
			if      (Delegates.pglVertexAttribI1ui != null)
				Delegates.pglVertexAttribI1ui(index, x);
			else
				throw new InvalidOperationException("binding point VertexAttribI1 cannot be found");
			LogProc("glVertexAttribI1ui({0}, {1})", index, x);
		}

		/// <summary>
		/// Binding for glVertexAttribI1uiv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		/// @deprecated
		public static void VertexAttribI1(UInt32 index, UInt32[] v) {
			unsafe {
				fixed (UInt32* fp_v = v)
				{
					if      (Delegates.pglVertexAttribI1uiv != null)
						Delegates.pglVertexAttribI1uiv(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttribI1 cannot be found");
				}
			}
			LogProc("glVertexAttribI1uiv({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttribI1uiv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		/// @deprecated
		public static void VertexAttribI1(UInt32 index, UInt32* v) {
			unsafe {
				if      (Delegates.pglVertexAttribI1uiv != null)
					Delegates.pglVertexAttribI1uiv(index, v);
				else
					throw new InvalidOperationException("binding point VertexAttribI1 cannot be found");
			}
			LogProc("glVertexAttribI1uiv({0}, {1})", index, "v");
		}
		

		/// <summary>
		/// Binding for glVertexAttribI2i function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		/// @deprecated
		public static void VertexAttribI2(UInt32 index, int x, int y) {
			if      (Delegates.pglVertexAttribI2i != null)
				Delegates.pglVertexAttribI2i(index, x, y);
			else
				throw new InvalidOperationException("binding point VertexAttribI2 cannot be found");
			LogProc("glVertexAttribI2i({0}, {1}, {2})", index, x, y);
		}

		/// <summary>
		/// Binding for glVertexAttribI2iv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		/// @deprecated
		public static void VertexAttribI2(UInt32 index, int[] v) {
			unsafe {
				fixed (int* fp_v = v)
				{
					if      (Delegates.pglVertexAttribI2iv != null)
						Delegates.pglVertexAttribI2iv(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttribI2 cannot be found");
				}
			}
			LogProc("glVertexAttribI2iv({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttribI2iv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		/// @deprecated
		public static void VertexAttribI2(UInt32 index, int* v) {
			unsafe {
				if      (Delegates.pglVertexAttribI2iv != null)
					Delegates.pglVertexAttribI2iv(index, v);
				else
					throw new InvalidOperationException("binding point VertexAttribI2 cannot be found");
			}
			LogProc("glVertexAttribI2iv({0}, {1})", index, "v");
		}
		

		/// <summary>
		/// Binding for glVertexAttribI2ui function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		/// @deprecated
		public static void VertexAttribI2(UInt32 index, UInt32 x, UInt32 y) {
			if      (Delegates.pglVertexAttribI2ui != null)
				Delegates.pglVertexAttribI2ui(index, x, y);
			else
				throw new InvalidOperationException("binding point VertexAttribI2 cannot be found");
			LogProc("glVertexAttribI2ui({0}, {1}, {2})", index, x, y);
		}

		/// <summary>
		/// Binding for glVertexAttribI2uiv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		/// @deprecated
		public static void VertexAttribI2(UInt32 index, UInt32[] v) {
			unsafe {
				fixed (UInt32* fp_v = v)
				{
					if      (Delegates.pglVertexAttribI2uiv != null)
						Delegates.pglVertexAttribI2uiv(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttribI2 cannot be found");
				}
			}
			LogProc("glVertexAttribI2uiv({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttribI2uiv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		/// @deprecated
		public static void VertexAttribI2(UInt32 index, UInt32* v) {
			unsafe {
				if      (Delegates.pglVertexAttribI2uiv != null)
					Delegates.pglVertexAttribI2uiv(index, v);
				else
					throw new InvalidOperationException("binding point VertexAttribI2 cannot be found");
			}
			LogProc("glVertexAttribI2uiv({0}, {1})", index, "v");
		}
		

		/// <summary>
		/// Binding for glVertexAttribI3i function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		/// @deprecated
		public static void VertexAttribI3(UInt32 index, int x, int y, int z) {
			if      (Delegates.pglVertexAttribI3i != null)
				Delegates.pglVertexAttribI3i(index, x, y, z);
			else
				throw new InvalidOperationException("binding point VertexAttribI3 cannot be found");
			LogProc("glVertexAttribI3i({0}, {1}, {2}, {3})", index, x, y, z);
		}

		/// <summary>
		/// Binding for glVertexAttribI3iv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		/// @deprecated
		public static void VertexAttribI3(UInt32 index, int[] v) {
			unsafe {
				fixed (int* fp_v = v)
				{
					if      (Delegates.pglVertexAttribI3iv != null)
						Delegates.pglVertexAttribI3iv(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttribI3 cannot be found");
				}
			}
			LogProc("glVertexAttribI3iv({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttribI3iv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		/// @deprecated
		public static void VertexAttribI3(UInt32 index, int* v) {
			unsafe {
				if      (Delegates.pglVertexAttribI3iv != null)
					Delegates.pglVertexAttribI3iv(index, v);
				else
					throw new InvalidOperationException("binding point VertexAttribI3 cannot be found");
			}
			LogProc("glVertexAttribI3iv({0}, {1})", index, "v");
		}
		

		/// <summary>
		/// Binding for glVertexAttribI3ui function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		/// @deprecated
		public static void VertexAttribI3(UInt32 index, UInt32 x, UInt32 y, UInt32 z) {
			if      (Delegates.pglVertexAttribI3ui != null)
				Delegates.pglVertexAttribI3ui(index, x, y, z);
			else
				throw new InvalidOperationException("binding point VertexAttribI3 cannot be found");
			LogProc("glVertexAttribI3ui({0}, {1}, {2}, {3})", index, x, y, z);
		}

		/// <summary>
		/// Binding for glVertexAttribI3uiv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		/// @deprecated
		public static void VertexAttribI3(UInt32 index, UInt32[] v) {
			unsafe {
				fixed (UInt32* fp_v = v)
				{
					if      (Delegates.pglVertexAttribI3uiv != null)
						Delegates.pglVertexAttribI3uiv(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttribI3 cannot be found");
				}
			}
			LogProc("glVertexAttribI3uiv({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttribI3uiv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		/// @deprecated
		public static void VertexAttribI3(UInt32 index, UInt32* v) {
			unsafe {
				if      (Delegates.pglVertexAttribI3uiv != null)
					Delegates.pglVertexAttribI3uiv(index, v);
				else
					throw new InvalidOperationException("binding point VertexAttribI3 cannot be found");
			}
			LogProc("glVertexAttribI3uiv({0}, {1})", index, "v");
		}
		

		/// <summary>
		/// Binding for glVertexAttribI4bv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.SByte*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		/// @deprecated
		public static void VertexAttribI4(UInt32 index, sbyte[] v) {
			unsafe {
				fixed (sbyte* fp_v = v)
				{
					if      (Delegates.pglVertexAttribI4bv != null)
						Delegates.pglVertexAttribI4bv(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttribI4 cannot be found");
				}
			}
			LogProc("glVertexAttribI4bv({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttribI4i function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="w">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		/// @deprecated
		public static void VertexAttribI4(UInt32 index, int x, int y, int z, int w) {
			if      (Delegates.pglVertexAttribI4i != null)
				Delegates.pglVertexAttribI4i(index, x, y, z, w);
			else
				throw new InvalidOperationException("binding point VertexAttribI4 cannot be found");
			LogProc("glVertexAttribI4i({0}, {1}, {2}, {3}, {4})", index, x, y, z, w);
		}

		/// <summary>
		/// Binding for glVertexAttribI4iv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		/// @deprecated
		public static void VertexAttribI4(UInt32 index, int[] v) {
			unsafe {
				fixed (int* fp_v = v)
				{
					if      (Delegates.pglVertexAttribI4iv != null)
						Delegates.pglVertexAttribI4iv(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttribI4 cannot be found");
				}
			}
			LogProc("glVertexAttribI4iv({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttribI4iv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		/// @deprecated
		public static void VertexAttribI4(UInt32 index, int* v) {
			unsafe {
				if      (Delegates.pglVertexAttribI4iv != null)
					Delegates.pglVertexAttribI4iv(index, v);
				else
					throw new InvalidOperationException("binding point VertexAttribI4 cannot be found");
			}
			LogProc("glVertexAttribI4iv({0}, {1})", index, "v");
		}
		

		/// <summary>
		/// Binding for glVertexAttribI4sv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Int16*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		/// @deprecated
		public static void VertexAttribI4(UInt32 index, Int16[] v) {
			unsafe {
				fixed (Int16* fp_v = v)
				{
					if      (Delegates.pglVertexAttribI4sv != null)
						Delegates.pglVertexAttribI4sv(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttribI4 cannot be found");
				}
			}
			LogProc("glVertexAttribI4sv({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttribI4ubv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Byte*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		/// @deprecated
		public static void VertexAttribI4(UInt32 index, byte[] v) {
			unsafe {
				fixed (byte* fp_v = v)
				{
					if      (Delegates.pglVertexAttribI4ubv != null)
						Delegates.pglVertexAttribI4ubv(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttribI4 cannot be found");
				}
			}
			LogProc("glVertexAttribI4ubv({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttribI4ui function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="w">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		/// @deprecated
		public static void VertexAttribI4(UInt32 index, UInt32 x, UInt32 y, UInt32 z, UInt32 w) {
			if      (Delegates.pglVertexAttribI4ui != null)
				Delegates.pglVertexAttribI4ui(index, x, y, z, w);
			else
				throw new InvalidOperationException("binding point VertexAttribI4 cannot be found");
			LogProc("glVertexAttribI4ui({0}, {1}, {2}, {3}, {4})", index, x, y, z, w);
		}

		/// <summary>
		/// Binding for glVertexAttribI4uiv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		/// @deprecated
		public static void VertexAttribI4(UInt32 index, UInt32[] v) {
			unsafe {
				fixed (UInt32* fp_v = v)
				{
					if      (Delegates.pglVertexAttribI4uiv != null)
						Delegates.pglVertexAttribI4uiv(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttribI4 cannot be found");
				}
			}
			LogProc("glVertexAttribI4uiv({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttribI4uiv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		/// @deprecated
		public static void VertexAttribI4(UInt32 index, UInt32* v) {
			unsafe {
				if      (Delegates.pglVertexAttribI4uiv != null)
					Delegates.pglVertexAttribI4uiv(index, v);
				else
					throw new InvalidOperationException("binding point VertexAttribI4 cannot be found");
			}
			LogProc("glVertexAttribI4uiv({0}, {1})", index, "v");
		}
		

		/// <summary>
		/// Binding for glVertexAttribI4usv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.UInt16*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		/// @deprecated
		public static void VertexAttribI4(UInt32 index, UInt16[] v) {
			unsafe {
				fixed (UInt16* fp_v = v)
				{
					if      (Delegates.pglVertexAttribI4usv != null)
						Delegates.pglVertexAttribI4usv(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttribI4 cannot be found");
				}
			}
			LogProc("glVertexAttribI4usv({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttribIPointer function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="size">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="stride">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pointer">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void VertexAttribIPointer(UInt32 index, int size, int type, Int32 stride, object pointer) {
			GCHandle pp_pointer = GCHandle.Alloc(pointer, GCHandleType.Pinned);
			try {
				if      (Delegates.pglVertexAttribIPointer != null)
					Delegates.pglVertexAttribIPointer(index, size, type, stride, pp_pointer.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point VertexAttribIPointer cannot be found");
			} finally {
				pp_pointer.Free();
			}
			LogProc("glVertexAttribIPointer({0}, {1}, {2}, {3}, {4})", index, size, type, stride, pointer);
		}

		/// <summary>
		/// Binding for glVertexAttribL1d function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void VertexAttribL1(UInt32 index, double x) {
			if      (Delegates.pglVertexAttribL1d != null)
				Delegates.pglVertexAttribL1d(index, x);
			else
				throw new InvalidOperationException("binding point VertexAttribL1 cannot be found");
			LogProc("glVertexAttribL1d({0}, {1})", index, x);
		}

		/// <summary>
		/// Binding for glVertexAttribL1dv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void VertexAttribL1(UInt32 index, double[] v) {
			unsafe {
				fixed (double* fp_v = v)
				{
					if      (Delegates.pglVertexAttribL1dv != null)
						Delegates.pglVertexAttribL1dv(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttribL1 cannot be found");
				}
			}
			LogProc("glVertexAttribL1dv({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttribL1dv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void VertexAttribL1(UInt32 index, double* v) {
			unsafe {
				if      (Delegates.pglVertexAttribL1dv != null)
					Delegates.pglVertexAttribL1dv(index, v);
				else
					throw new InvalidOperationException("binding point VertexAttribL1 cannot be found");
			}
			LogProc("glVertexAttribL1dv({0}, {1})", index, "v");
		}
		

		/// <summary>
		/// Binding for glVertexAttribL2d function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void VertexAttribL2(UInt32 index, double x, double y) {
			if      (Delegates.pglVertexAttribL2d != null)
				Delegates.pglVertexAttribL2d(index, x, y);
			else
				throw new InvalidOperationException("binding point VertexAttribL2 cannot be found");
			LogProc("glVertexAttribL2d({0}, {1}, {2})", index, x, y);
		}

		/// <summary>
		/// Binding for glVertexAttribL2dv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void VertexAttribL2(UInt32 index, double[] v) {
			unsafe {
				fixed (double* fp_v = v)
				{
					if      (Delegates.pglVertexAttribL2dv != null)
						Delegates.pglVertexAttribL2dv(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttribL2 cannot be found");
				}
			}
			LogProc("glVertexAttribL2dv({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttribL2dv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void VertexAttribL2(UInt32 index, double* v) {
			unsafe {
				if      (Delegates.pglVertexAttribL2dv != null)
					Delegates.pglVertexAttribL2dv(index, v);
				else
					throw new InvalidOperationException("binding point VertexAttribL2 cannot be found");
			}
			LogProc("glVertexAttribL2dv({0}, {1})", index, "v");
		}
		

		/// <summary>
		/// Binding for glVertexAttribL3d function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void VertexAttribL3(UInt32 index, double x, double y, double z) {
			if      (Delegates.pglVertexAttribL3d != null)
				Delegates.pglVertexAttribL3d(index, x, y, z);
			else
				throw new InvalidOperationException("binding point VertexAttribL3 cannot be found");
			LogProc("glVertexAttribL3d({0}, {1}, {2}, {3})", index, x, y, z);
		}

		/// <summary>
		/// Binding for glVertexAttribL3dv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void VertexAttribL3(UInt32 index, double[] v) {
			unsafe {
				fixed (double* fp_v = v)
				{
					if      (Delegates.pglVertexAttribL3dv != null)
						Delegates.pglVertexAttribL3dv(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttribL3 cannot be found");
				}
			}
			LogProc("glVertexAttribL3dv({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttribL3dv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void VertexAttribL3(UInt32 index, double* v) {
			unsafe {
				if      (Delegates.pglVertexAttribL3dv != null)
					Delegates.pglVertexAttribL3dv(index, v);
				else
					throw new InvalidOperationException("binding point VertexAttribL3 cannot be found");
			}
			LogProc("glVertexAttribL3dv({0}, {1})", index, "v");
		}
		

		/// <summary>
		/// Binding for glVertexAttribL4d function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="w">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void VertexAttribL4(UInt32 index, double x, double y, double z, double w) {
			if      (Delegates.pglVertexAttribL4d != null)
				Delegates.pglVertexAttribL4d(index, x, y, z, w);
			else
				throw new InvalidOperationException("binding point VertexAttribL4 cannot be found");
			LogProc("glVertexAttribL4d({0}, {1}, {2}, {3}, {4})", index, x, y, z, w);
		}

		/// <summary>
		/// Binding for glVertexAttribL4dv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void VertexAttribL4(UInt32 index, double[] v) {
			unsafe {
				fixed (double* fp_v = v)
				{
					if      (Delegates.pglVertexAttribL4dv != null)
						Delegates.pglVertexAttribL4dv(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttribL4 cannot be found");
				}
			}
			LogProc("glVertexAttribL4dv({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttribL4dv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void VertexAttribL4(UInt32 index, double* v) {
			unsafe {
				if      (Delegates.pglVertexAttribL4dv != null)
					Delegates.pglVertexAttribL4dv(index, v);
				else
					throw new InvalidOperationException("binding point VertexAttribL4 cannot be found");
			}
			LogProc("glVertexAttribL4dv({0}, {1})", index, "v");
		}
		

		/// <summary>
		/// Binding for glVertexAttribLPointer function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="size">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="stride">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pointer">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void VertexAttribLPointer(UInt32 index, int size, int type, Int32 stride, object pointer) {
			GCHandle pp_pointer = GCHandle.Alloc(pointer, GCHandleType.Pinned);
			try {
				if      (Delegates.pglVertexAttribLPointer != null)
					Delegates.pglVertexAttribLPointer(index, size, type, stride, pp_pointer.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point VertexAttribLPointer cannot be found");
			} finally {
				pp_pointer.Free();
			}
			LogProc("glVertexAttribLPointer({0}, {1}, {2}, {3}, {4})", index, size, type, stride, pointer);
		}

		/// <summary>
		/// Binding for glVertexAttribP1ui function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="normalized">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void VertexAttribP1(UInt32 index, int type, bool normalized, UInt32 value) {
			if      (Delegates.pglVertexAttribP1ui != null)
				Delegates.pglVertexAttribP1ui(index, type, normalized, value);
			else
				throw new InvalidOperationException("binding point VertexAttribP1 cannot be found");
			LogProc("glVertexAttribP1ui({0}, {1}, {2}, {3})", index, type, normalized, value);
		}

		/// <summary>
		/// Binding for glVertexAttribP1uiv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="normalized">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void VertexAttribP1(UInt32 index, int type, bool normalized, UInt32[] value) {
			unsafe {
				fixed (UInt32* fp_value = value)
				{
					if      (Delegates.pglVertexAttribP1uiv != null)
						Delegates.pglVertexAttribP1uiv(index, type, normalized, fp_value);
					else
						throw new InvalidOperationException("binding point VertexAttribP1 cannot be found");
				}
			}
			LogProc("glVertexAttribP1uiv({0}, {1}, {2}, {3})", index, type, normalized, value);
		}

		/// <summary>
		/// Binding for glVertexAttribP1uiv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="normalized">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void VertexAttribP1(UInt32 index, int type, bool normalized, UInt32* value) {
			unsafe {
				if      (Delegates.pglVertexAttribP1uiv != null)
					Delegates.pglVertexAttribP1uiv(index, type, normalized, value);
				else
					throw new InvalidOperationException("binding point VertexAttribP1 cannot be found");
			}
			LogProc("glVertexAttribP1uiv({0}, {1}, {2}, {3})", index, type, normalized, "value");
		}
		

		/// <summary>
		/// Binding for glVertexAttribP2ui function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="normalized">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void VertexAttribP2(UInt32 index, int type, bool normalized, UInt32 value) {
			if      (Delegates.pglVertexAttribP2ui != null)
				Delegates.pglVertexAttribP2ui(index, type, normalized, value);
			else
				throw new InvalidOperationException("binding point VertexAttribP2 cannot be found");
			LogProc("glVertexAttribP2ui({0}, {1}, {2}, {3})", index, type, normalized, value);
		}

		/// <summary>
		/// Binding for glVertexAttribP2uiv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="normalized">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void VertexAttribP2(UInt32 index, int type, bool normalized, UInt32[] value) {
			unsafe {
				fixed (UInt32* fp_value = value)
				{
					if      (Delegates.pglVertexAttribP2uiv != null)
						Delegates.pglVertexAttribP2uiv(index, type, normalized, fp_value);
					else
						throw new InvalidOperationException("binding point VertexAttribP2 cannot be found");
				}
			}
			LogProc("glVertexAttribP2uiv({0}, {1}, {2}, {3})", index, type, normalized, value);
		}

		/// <summary>
		/// Binding for glVertexAttribP2uiv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="normalized">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void VertexAttribP2(UInt32 index, int type, bool normalized, UInt32* value) {
			unsafe {
				if      (Delegates.pglVertexAttribP2uiv != null)
					Delegates.pglVertexAttribP2uiv(index, type, normalized, value);
				else
					throw new InvalidOperationException("binding point VertexAttribP2 cannot be found");
			}
			LogProc("glVertexAttribP2uiv({0}, {1}, {2}, {3})", index, type, normalized, "value");
		}
		

		/// <summary>
		/// Binding for glVertexAttribP3ui function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="normalized">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void VertexAttribP3(UInt32 index, int type, bool normalized, UInt32 value) {
			if      (Delegates.pglVertexAttribP3ui != null)
				Delegates.pglVertexAttribP3ui(index, type, normalized, value);
			else
				throw new InvalidOperationException("binding point VertexAttribP3 cannot be found");
			LogProc("glVertexAttribP3ui({0}, {1}, {2}, {3})", index, type, normalized, value);
		}

		/// <summary>
		/// Binding for glVertexAttribP3uiv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="normalized">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void VertexAttribP3(UInt32 index, int type, bool normalized, UInt32[] value) {
			unsafe {
				fixed (UInt32* fp_value = value)
				{
					if      (Delegates.pglVertexAttribP3uiv != null)
						Delegates.pglVertexAttribP3uiv(index, type, normalized, fp_value);
					else
						throw new InvalidOperationException("binding point VertexAttribP3 cannot be found");
				}
			}
			LogProc("glVertexAttribP3uiv({0}, {1}, {2}, {3})", index, type, normalized, value);
		}

		/// <summary>
		/// Binding for glVertexAttribP3uiv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="normalized">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void VertexAttribP3(UInt32 index, int type, bool normalized, UInt32* value) {
			unsafe {
				if      (Delegates.pglVertexAttribP3uiv != null)
					Delegates.pglVertexAttribP3uiv(index, type, normalized, value);
				else
					throw new InvalidOperationException("binding point VertexAttribP3 cannot be found");
			}
			LogProc("glVertexAttribP3uiv({0}, {1}, {2}, {3})", index, type, normalized, "value");
		}
		

		/// <summary>
		/// Binding for glVertexAttribP4ui function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="normalized">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void VertexAttribP4(UInt32 index, int type, bool normalized, UInt32 value) {
			if      (Delegates.pglVertexAttribP4ui != null)
				Delegates.pglVertexAttribP4ui(index, type, normalized, value);
			else
				throw new InvalidOperationException("binding point VertexAttribP4 cannot be found");
			LogProc("glVertexAttribP4ui({0}, {1}, {2}, {3})", index, type, normalized, value);
		}

		/// <summary>
		/// Binding for glVertexAttribP4uiv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="normalized">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void VertexAttribP4(UInt32 index, int type, bool normalized, UInt32[] value) {
			unsafe {
				fixed (UInt32* fp_value = value)
				{
					if      (Delegates.pglVertexAttribP4uiv != null)
						Delegates.pglVertexAttribP4uiv(index, type, normalized, fp_value);
					else
						throw new InvalidOperationException("binding point VertexAttribP4 cannot be found");
				}
			}
			LogProc("glVertexAttribP4uiv({0}, {1}, {2}, {3})", index, type, normalized, value);
		}

		/// <summary>
		/// Binding for glVertexAttribP4uiv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="normalized">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void VertexAttribP4(UInt32 index, int type, bool normalized, UInt32* value) {
			unsafe {
				if      (Delegates.pglVertexAttribP4uiv != null)
					Delegates.pglVertexAttribP4uiv(index, type, normalized, value);
				else
					throw new InvalidOperationException("binding point VertexAttribP4 cannot be found");
			}
			LogProc("glVertexAttribP4uiv({0}, {1}, {2}, {3})", index, type, normalized, "value");
		}
		

		/// <summary>
		/// Binding for glVertexAttribPointer function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="size">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="normalized">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="stride">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pointer">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void VertexAttribPointer(UInt32 index, int size, int type, bool normalized, Int32 stride, object pointer) {
			GCHandle pp_pointer = GCHandle.Alloc(pointer, GCHandleType.Pinned);
			try {
				if      (Delegates.pglVertexAttribPointer != null)
					Delegates.pglVertexAttribPointer(index, size, type, normalized, stride, pp_pointer.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point VertexAttribPointer cannot be found");
			} finally {
				pp_pointer.Free();
			}
			LogProc("glVertexAttribPointer({0}, {1}, {2}, {3}, {4}, {5})", index, size, type, normalized, stride, pointer);
		}

		/// <summary>
		/// Binding for glVertexP2ui function.
		/// </summary>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void VertexP2(int type, UInt32 value) {
			if      (Delegates.pglVertexP2ui != null)
				Delegates.pglVertexP2ui(type, value);
			else
				throw new InvalidOperationException("binding point VertexP2 cannot be found");
			LogProc("glVertexP2ui({0}, {1})", type, value);
		}

		/// <summary>
		/// Binding for glVertexP2uiv function.
		/// </summary>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void VertexP2(int type, UInt32[] value) {
			unsafe {
				fixed (UInt32* fp_value = value)
				{
					if      (Delegates.pglVertexP2uiv != null)
						Delegates.pglVertexP2uiv(type, fp_value);
					else
						throw new InvalidOperationException("binding point VertexP2 cannot be found");
				}
			}
			LogProc("glVertexP2uiv({0}, {1})", type, value);
		}

		/// <summary>
		/// Binding for glVertexP2uiv function.
		/// </summary>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void VertexP2(int type, UInt32* value) {
			unsafe {
				if      (Delegates.pglVertexP2uiv != null)
					Delegates.pglVertexP2uiv(type, value);
				else
					throw new InvalidOperationException("binding point VertexP2 cannot be found");
			}
			LogProc("glVertexP2uiv({0}, {1})", type, "value");
		}
		

		/// <summary>
		/// Binding for glVertexP3ui function.
		/// </summary>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void VertexP3(int type, UInt32 value) {
			if      (Delegates.pglVertexP3ui != null)
				Delegates.pglVertexP3ui(type, value);
			else
				throw new InvalidOperationException("binding point VertexP3 cannot be found");
			LogProc("glVertexP3ui({0}, {1})", type, value);
		}

		/// <summary>
		/// Binding for glVertexP3uiv function.
		/// </summary>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void VertexP3(int type, UInt32[] value) {
			unsafe {
				fixed (UInt32* fp_value = value)
				{
					if      (Delegates.pglVertexP3uiv != null)
						Delegates.pglVertexP3uiv(type, fp_value);
					else
						throw new InvalidOperationException("binding point VertexP3 cannot be found");
				}
			}
			LogProc("glVertexP3uiv({0}, {1})", type, value);
		}

		/// <summary>
		/// Binding for glVertexP3uiv function.
		/// </summary>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void VertexP3(int type, UInt32* value) {
			unsafe {
				if      (Delegates.pglVertexP3uiv != null)
					Delegates.pglVertexP3uiv(type, value);
				else
					throw new InvalidOperationException("binding point VertexP3 cannot be found");
			}
			LogProc("glVertexP3uiv({0}, {1})", type, "value");
		}
		

		/// <summary>
		/// Binding for glVertexP4ui function.
		/// </summary>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void VertexP4(int type, UInt32 value) {
			if      (Delegates.pglVertexP4ui != null)
				Delegates.pglVertexP4ui(type, value);
			else
				throw new InvalidOperationException("binding point VertexP4 cannot be found");
			LogProc("glVertexP4ui({0}, {1})", type, value);
		}

		/// <summary>
		/// Binding for glVertexP4uiv function.
		/// </summary>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void VertexP4(int type, UInt32[] value) {
			unsafe {
				fixed (UInt32* fp_value = value)
				{
					if      (Delegates.pglVertexP4uiv != null)
						Delegates.pglVertexP4uiv(type, fp_value);
					else
						throw new InvalidOperationException("binding point VertexP4 cannot be found");
				}
			}
			LogProc("glVertexP4uiv({0}, {1})", type, value);
		}

		/// <summary>
		/// Binding for glVertexP4uiv function.
		/// </summary>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void VertexP4(int type, UInt32* value) {
			unsafe {
				if      (Delegates.pglVertexP4uiv != null)
					Delegates.pglVertexP4uiv(type, value);
				else
					throw new InvalidOperationException("binding point VertexP4 cannot be found");
			}
			LogProc("glVertexP4uiv({0}, {1})", type, "value");
		}
		

		/// <summary>
		/// Binding for glVertexPointer function.
		/// </summary>
		/// <param name="size">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="stride">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pointer">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		/// @deprecated
		public static void VertexPointer(int size, int type, Int32 stride, object pointer) {
			GCHandle pp_pointer = GCHandle.Alloc(pointer, GCHandleType.Pinned);
			try {
				if      (Delegates.pglVertexPointer != null)
					Delegates.pglVertexPointer(size, type, stride, pp_pointer.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point VertexPointer cannot be found");
			} finally {
				pp_pointer.Free();
			}
			LogProc("glVertexPointer({0}, {1}, {2}, {3})", size, type, stride, pointer);
		}

		/// <summary>
		/// Binding for glViewport function.
		/// </summary>
		/// <param name="x">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void Viewport(int x, int y, Int32 width, Int32 height) {
			if      (Delegates.pglViewport != null)
				Delegates.pglViewport(x, y, width, height);
			else
				throw new InvalidOperationException("binding point Viewport cannot be found");
			LogProc("glViewport({0}, {1}, {2}, {3})", x, y, width, height);
		}

		/// <summary>
		/// Binding for glViewportArrayv function.
		/// </summary>
		/// <param name="first">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ViewportArray(UInt32 first, Int32 count, float[] v) {
			unsafe {
				fixed (float* fp_v = v)
				{
					if      (Delegates.pglViewportArrayv != null)
						Delegates.pglViewportArrayv(first, count, fp_v);
					else
						throw new InvalidOperationException("binding point ViewportArray cannot be found");
				}
			}
			LogProc("glViewportArrayv({0}, {1}, {2})", first, count, v);
		}

		/// <summary>
		/// Binding for glViewportArrayv function.
		/// </summary>
		/// <param name="first">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ViewportArray(UInt32 first, Int32 count, float* v) {
			unsafe {
				if      (Delegates.pglViewportArrayv != null)
					Delegates.pglViewportArrayv(first, count, v);
				else
					throw new InvalidOperationException("binding point ViewportArray cannot be found");
			}
			LogProc("glViewportArrayv({0}, {1}, {2})", first, count, "v");
		}
		

		/// <summary>
		/// Binding for glViewportIndexedf function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="w">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="h">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ViewportIndexed(UInt32 index, float x, float y, float w, float h) {
			if      (Delegates.pglViewportIndexedf != null)
				Delegates.pglViewportIndexedf(index, x, y, w, h);
			else
				throw new InvalidOperationException("binding point ViewportIndexed cannot be found");
			LogProc("glViewportIndexedf({0}, {1}, {2}, {3}, {4})", index, x, y, w, h);
		}

		/// <summary>
		/// Binding for glViewportIndexedfv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ViewportIndexed(UInt32 index, float[] v) {
			unsafe {
				fixed (float* fp_v = v)
				{
					if      (Delegates.pglViewportIndexedfv != null)
						Delegates.pglViewportIndexedfv(index, fp_v);
					else
						throw new InvalidOperationException("binding point ViewportIndexed cannot be found");
				}
			}
			LogProc("glViewportIndexedfv({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glViewportIndexedfv function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ViewportIndexed(UInt32 index, float* v) {
			unsafe {
				if      (Delegates.pglViewportIndexedfv != null)
					Delegates.pglViewportIndexedfv(index, v);
				else
					throw new InvalidOperationException("binding point ViewportIndexed cannot be found");
			}
			LogProc("glViewportIndexedfv({0}, {1})", index, "v");
		}
		

		/// <summary>
		/// Binding for glWaitSync function.
		/// </summary>
		/// <param name="sync">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="flags">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="timeout">
		/// A <see cref="T:System.UInt64"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void WaitSync(int sync, uint flags, UInt64 timeout) {
			if      (Delegates.pglWaitSync != null)
				Delegates.pglWaitSync(sync, flags, timeout);
			else
				throw new InvalidOperationException("binding point WaitSync cannot be found");
			LogProc("glWaitSync({0}, {1}, {2})", sync, flags, timeout);
		}

		/// <summary>
		/// Binding for glWindowPos2d function.
		/// </summary>
		/// <param name="x">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.4
		/// @deprecated
		public static void WindowPos2(double x, double y) {
			if      (Delegates.pglWindowPos2d != null)
				Delegates.pglWindowPos2d(x, y);
			else
				throw new InvalidOperationException("binding point WindowPos2 cannot be found");
			LogProc("glWindowPos2d({0}, {1})", x, y);
		}

		/// <summary>
		/// Binding for glWindowPos2dv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.4
		/// @deprecated
		public static void WindowPos2(double[] v) {
			unsafe {
				fixed (double* fp_v = v)
				{
					if      (Delegates.pglWindowPos2dv != null)
						Delegates.pglWindowPos2dv(fp_v);
					else
						throw new InvalidOperationException("binding point WindowPos2 cannot be found");
				}
			}
			LogProc("glWindowPos2dv({0})", v);
		}

		/// <summary>
		/// Binding for glWindowPos2f function.
		/// </summary>
		/// <param name="x">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.4
		/// @deprecated
		public static void WindowPos2(float x, float y) {
			if      (Delegates.pglWindowPos2f != null)
				Delegates.pglWindowPos2f(x, y);
			else
				throw new InvalidOperationException("binding point WindowPos2 cannot be found");
			LogProc("glWindowPos2f({0}, {1})", x, y);
		}

		/// <summary>
		/// Binding for glWindowPos2fv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.4
		/// @deprecated
		public static void WindowPos2(float[] v) {
			unsafe {
				fixed (float* fp_v = v)
				{
					if      (Delegates.pglWindowPos2fv != null)
						Delegates.pglWindowPos2fv(fp_v);
					else
						throw new InvalidOperationException("binding point WindowPos2 cannot be found");
				}
			}
			LogProc("glWindowPos2fv({0})", v);
		}

		/// <summary>
		/// Binding for glWindowPos2i function.
		/// </summary>
		/// <param name="x">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.4
		/// @deprecated
		public static void WindowPos2(int x, int y) {
			if      (Delegates.pglWindowPos2i != null)
				Delegates.pglWindowPos2i(x, y);
			else
				throw new InvalidOperationException("binding point WindowPos2 cannot be found");
			LogProc("glWindowPos2i({0}, {1})", x, y);
		}

		/// <summary>
		/// Binding for glWindowPos2iv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.4
		/// @deprecated
		public static void WindowPos2(int[] v) {
			unsafe {
				fixed (int* fp_v = v)
				{
					if      (Delegates.pglWindowPos2iv != null)
						Delegates.pglWindowPos2iv(fp_v);
					else
						throw new InvalidOperationException("binding point WindowPos2 cannot be found");
				}
			}
			LogProc("glWindowPos2iv({0})", v);
		}

		/// <summary>
		/// Binding for glWindowPos2s function.
		/// </summary>
		/// <param name="x">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.4
		/// @deprecated
		public static void WindowPos2(Int16 x, Int16 y) {
			if      (Delegates.pglWindowPos2s != null)
				Delegates.pglWindowPos2s(x, y);
			else
				throw new InvalidOperationException("binding point WindowPos2 cannot be found");
			LogProc("glWindowPos2s({0}, {1})", x, y);
		}

		/// <summary>
		/// Binding for glWindowPos2sv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Int16*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.4
		/// @deprecated
		public static void WindowPos2(Int16[] v) {
			unsafe {
				fixed (Int16* fp_v = v)
				{
					if      (Delegates.pglWindowPos2sv != null)
						Delegates.pglWindowPos2sv(fp_v);
					else
						throw new InvalidOperationException("binding point WindowPos2 cannot be found");
				}
			}
			LogProc("glWindowPos2sv({0})", v);
		}

		/// <summary>
		/// Binding for glWindowPos3d function.
		/// </summary>
		/// <param name="x">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.4
		/// @deprecated
		public static void WindowPos3(double x, double y, double z) {
			if      (Delegates.pglWindowPos3d != null)
				Delegates.pglWindowPos3d(x, y, z);
			else
				throw new InvalidOperationException("binding point WindowPos3 cannot be found");
			LogProc("glWindowPos3d({0}, {1}, {2})", x, y, z);
		}

		/// <summary>
		/// Binding for glWindowPos3dv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.4
		/// @deprecated
		public static void WindowPos3(double[] v) {
			unsafe {
				fixed (double* fp_v = v)
				{
					if      (Delegates.pglWindowPos3dv != null)
						Delegates.pglWindowPos3dv(fp_v);
					else
						throw new InvalidOperationException("binding point WindowPos3 cannot be found");
				}
			}
			LogProc("glWindowPos3dv({0})", v);
		}

		/// <summary>
		/// Binding for glWindowPos3f function.
		/// </summary>
		/// <param name="x">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.4
		/// @deprecated
		public static void WindowPos3(float x, float y, float z) {
			if      (Delegates.pglWindowPos3f != null)
				Delegates.pglWindowPos3f(x, y, z);
			else
				throw new InvalidOperationException("binding point WindowPos3 cannot be found");
			LogProc("glWindowPos3f({0}, {1}, {2})", x, y, z);
		}

		/// <summary>
		/// Binding for glWindowPos3fv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.4
		/// @deprecated
		public static void WindowPos3(float[] v) {
			unsafe {
				fixed (float* fp_v = v)
				{
					if      (Delegates.pglWindowPos3fv != null)
						Delegates.pglWindowPos3fv(fp_v);
					else
						throw new InvalidOperationException("binding point WindowPos3 cannot be found");
				}
			}
			LogProc("glWindowPos3fv({0})", v);
		}

		/// <summary>
		/// Binding for glWindowPos3i function.
		/// </summary>
		/// <param name="x">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.4
		/// @deprecated
		public static void WindowPos3(int x, int y, int z) {
			if      (Delegates.pglWindowPos3i != null)
				Delegates.pglWindowPos3i(x, y, z);
			else
				throw new InvalidOperationException("binding point WindowPos3 cannot be found");
			LogProc("glWindowPos3i({0}, {1}, {2})", x, y, z);
		}

		/// <summary>
		/// Binding for glWindowPos3iv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.4
		/// @deprecated
		public static void WindowPos3(int[] v) {
			unsafe {
				fixed (int* fp_v = v)
				{
					if      (Delegates.pglWindowPos3iv != null)
						Delegates.pglWindowPos3iv(fp_v);
					else
						throw new InvalidOperationException("binding point WindowPos3 cannot be found");
				}
			}
			LogProc("glWindowPos3iv({0})", v);
		}

		/// <summary>
		/// Binding for glWindowPos3s function.
		/// </summary>
		/// <param name="x">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.4
		/// @deprecated
		public static void WindowPos3(Int16 x, Int16 y, Int16 z) {
			if      (Delegates.pglWindowPos3s != null)
				Delegates.pglWindowPos3s(x, y, z);
			else
				throw new InvalidOperationException("binding point WindowPos3 cannot be found");
			LogProc("glWindowPos3s({0}, {1}, {2})", x, y, z);
		}

		/// <summary>
		/// Binding for glWindowPos3sv function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Int16*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.4
		/// @deprecated
		public static void WindowPos3(Int16[] v) {
			unsafe {
				fixed (Int16* fp_v = v)
				{
					if      (Delegates.pglWindowPos3sv != null)
						Delegates.pglWindowPos3sv(fp_v);
					else
						throw new InvalidOperationException("binding point WindowPos3 cannot be found");
				}
			}
			LogProc("glWindowPos3sv({0})", v);
		}

		internal static partial class Delegates
		{
			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glAccum(int op, float value);
			[ThreadStatic]
			internal static glAccum pglAccum = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glActiveShaderProgram(UInt32 pipeline, UInt32 program);
			[ThreadStatic]
			internal static glActiveShaderProgram pglActiveShaderProgram = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glActiveTexture(int texture);
			[ThreadStatic]
			internal static glActiveTexture pglActiveTexture = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glAlphaFunc(int func, float @ref);
			[ThreadStatic]
			internal static glAlphaFunc pglAlphaFunc = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate bool glAreTexturesResident(Int32 n, UInt32* textures, [Out] bool* residences);
			[ThreadStatic]
			internal static glAreTexturesResident pglAreTexturesResident = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glArrayElement(int i);
			[ThreadStatic]
			internal static glArrayElement pglArrayElement = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glAttachShader(UInt32 program, UInt32 shader);
			[ThreadStatic]
			internal static glAttachShader pglAttachShader = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glBegin(int mode);
			[ThreadStatic]
			internal static glBegin pglBegin = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glBeginConditionalRender(UInt32 id, int mode);
			[ThreadStatic]
			internal static glBeginConditionalRender pglBeginConditionalRender = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glBeginQuery(int target, UInt32 id);
			[ThreadStatic]
			internal static glBeginQuery pglBeginQuery = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glBeginQueryIndexed(int target, UInt32 index, UInt32 id);
			[ThreadStatic]
			internal static glBeginQueryIndexed pglBeginQueryIndexed = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glBeginTransformFeedback(int primitiveMode);
			[ThreadStatic]
			internal static glBeginTransformFeedback pglBeginTransformFeedback = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glBindAttribLocation(UInt32 program, UInt32 index, string name);
			[ThreadStatic]
			internal static glBindAttribLocation pglBindAttribLocation = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glBindBuffer(int target, UInt32 buffer);
			[ThreadStatic]
			internal static glBindBuffer pglBindBuffer = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glBindBufferBase(int target, UInt32 index, UInt32 buffer);
			[ThreadStatic]
			internal static glBindBufferBase pglBindBufferBase = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glBindBufferRange(int target, UInt32 index, UInt32 buffer, IntPtr offset, UInt32 size);
			[ThreadStatic]
			internal static glBindBufferRange pglBindBufferRange = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glBindFragDataLocation(UInt32 program, UInt32 color, string name);
			[ThreadStatic]
			internal static glBindFragDataLocation pglBindFragDataLocation = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glBindFragDataLocationIndexed(UInt32 program, UInt32 colorNumber, UInt32 index, string name);
			[ThreadStatic]
			internal static glBindFragDataLocationIndexed pglBindFragDataLocationIndexed = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glBindFramebuffer(int target, UInt32 framebuffer);
			[ThreadStatic]
			internal static glBindFramebuffer pglBindFramebuffer = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glBindImageTexture(UInt32 unit, UInt32 texture, int level, bool layered, int layer, int access, int format);
			[ThreadStatic]
			internal static glBindImageTexture pglBindImageTexture = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glBindProgramPipeline(UInt32 pipeline);
			[ThreadStatic]
			internal static glBindProgramPipeline pglBindProgramPipeline = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glBindRenderbuffer(int target, UInt32 renderbuffer);
			[ThreadStatic]
			internal static glBindRenderbuffer pglBindRenderbuffer = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glBindSampler(UInt32 unit, UInt32 sampler);
			[ThreadStatic]
			internal static glBindSampler pglBindSampler = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glBindTexture(int target, UInt32 texture);
			[ThreadStatic]
			internal static glBindTexture pglBindTexture = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glBindTransformFeedback(int target, UInt32 id);
			[ThreadStatic]
			internal static glBindTransformFeedback pglBindTransformFeedback = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glBindVertexArray(UInt32 array);
			[ThreadStatic]
			internal static glBindVertexArray pglBindVertexArray = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glBitmap(Int32 width, Int32 height, float xorig, float yorig, float xmove, float ymove, byte* bitmap);
			[ThreadStatic]
			internal static glBitmap pglBitmap = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glBlendColor(float red, float green, float blue, float alpha);
			[ThreadStatic]
			internal static glBlendColor pglBlendColor = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glBlendEquation(int mode);
			[ThreadStatic]
			internal static glBlendEquation pglBlendEquation = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glBlendEquationi(UInt32 buf, int mode);
			[ThreadStatic]
			internal static glBlendEquationi pglBlendEquationi = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glBlendEquationSeparate(int modeRGB, int modeAlpha);
			[ThreadStatic]
			internal static glBlendEquationSeparate pglBlendEquationSeparate = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glBlendEquationSeparatei(UInt32 buf, int modeRGB, int modeAlpha);
			[ThreadStatic]
			internal static glBlendEquationSeparatei pglBlendEquationSeparatei = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glBlendFunc(int sfactor, int dfactor);
			[ThreadStatic]
			internal static glBlendFunc pglBlendFunc = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glBlendFunci(UInt32 buf, int src, int dst);
			[ThreadStatic]
			internal static glBlendFunci pglBlendFunci = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glBlendFuncSeparate(int sfactorRGB, int dfactorRGB, int sfactorAlpha, int dfactorAlpha);
			[ThreadStatic]
			internal static glBlendFuncSeparate pglBlendFuncSeparate = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glBlendFuncSeparatei(UInt32 buf, int srcRGB, int dstRGB, int srcAlpha, int dstAlpha);
			[ThreadStatic]
			internal static glBlendFuncSeparatei pglBlendFuncSeparatei = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glBlitFramebuffer(int srcX0, int srcY0, int srcX1, int srcY1, int dstX0, int dstY0, int dstX1, int dstY1, uint mask, int filter);
			[ThreadStatic]
			internal static glBlitFramebuffer pglBlitFramebuffer = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glBufferData(int target, UInt32 size, IntPtr data, int usage);
			[ThreadStatic]
			internal static glBufferData pglBufferData = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glBufferSubData(int target, IntPtr offset, UInt32 size, IntPtr data);
			[ThreadStatic]
			internal static glBufferSubData pglBufferSubData = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glCallList(UInt32 list);
			[ThreadStatic]
			internal static glCallList pglCallList = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glCallLists(Int32 n, int type, IntPtr lists);
			[ThreadStatic]
			internal static glCallLists pglCallLists = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate int glCheckFramebufferStatus(int target);
			[ThreadStatic]
			internal static glCheckFramebufferStatus pglCheckFramebufferStatus = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glClampColor(int target, int clamp);
			[ThreadStatic]
			internal static glClampColor pglClampColor = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glClear(uint mask);
			[ThreadStatic]
			internal static glClear pglClear = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glClearAccum(float red, float green, float blue, float alpha);
			[ThreadStatic]
			internal static glClearAccum pglClearAccum = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glClearBufferfi(int buffer, int drawbuffer, float depth, int stencil);
			[ThreadStatic]
			internal static glClearBufferfi pglClearBufferfi = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glClearBufferfv(int buffer, int drawbuffer, float* value);
			[ThreadStatic]
			internal static glClearBufferfv pglClearBufferfv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glClearBufferiv(int buffer, int drawbuffer, int* value);
			[ThreadStatic]
			internal static glClearBufferiv pglClearBufferiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glClearBufferuiv(int buffer, int drawbuffer, UInt32* value);
			[ThreadStatic]
			internal static glClearBufferuiv pglClearBufferuiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glClearColor(float red, float green, float blue, float alpha);
			[ThreadStatic]
			internal static glClearColor pglClearColor = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glClearDepth(double depth);
			[ThreadStatic]
			internal static glClearDepth pglClearDepth = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glClearDepthf(float d);
			[ThreadStatic]
			internal static glClearDepthf pglClearDepthf = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glClearIndex(float c);
			[ThreadStatic]
			internal static glClearIndex pglClearIndex = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glClearStencil(int s);
			[ThreadStatic]
			internal static glClearStencil pglClearStencil = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glClientActiveTexture(int texture);
			[ThreadStatic]
			internal static glClientActiveTexture pglClientActiveTexture = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate int glClientWaitSync(int sync, uint flags, UInt64 timeout);
			[ThreadStatic]
			internal static glClientWaitSync pglClientWaitSync = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glClipPlane(int plane, double* equation);
			[ThreadStatic]
			internal static glClipPlane pglClipPlane = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glColor3b(sbyte red, sbyte green, sbyte blue);
			[ThreadStatic]
			internal static glColor3b pglColor3b = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glColor3bv(sbyte* v);
			[ThreadStatic]
			internal static glColor3bv pglColor3bv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glColor3d(double red, double green, double blue);
			[ThreadStatic]
			internal static glColor3d pglColor3d = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glColor3dv(double* v);
			[ThreadStatic]
			internal static glColor3dv pglColor3dv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glColor3f(float red, float green, float blue);
			[ThreadStatic]
			internal static glColor3f pglColor3f = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glColor3fv(float* v);
			[ThreadStatic]
			internal static glColor3fv pglColor3fv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glColor3i(int red, int green, int blue);
			[ThreadStatic]
			internal static glColor3i pglColor3i = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glColor3iv(int* v);
			[ThreadStatic]
			internal static glColor3iv pglColor3iv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glColor3s(Int16 red, Int16 green, Int16 blue);
			[ThreadStatic]
			internal static glColor3s pglColor3s = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glColor3sv(Int16* v);
			[ThreadStatic]
			internal static glColor3sv pglColor3sv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glColor3ub(byte red, byte green, byte blue);
			[ThreadStatic]
			internal static glColor3ub pglColor3ub = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glColor3ubv(byte* v);
			[ThreadStatic]
			internal static glColor3ubv pglColor3ubv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glColor3ui(UInt32 red, UInt32 green, UInt32 blue);
			[ThreadStatic]
			internal static glColor3ui pglColor3ui = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glColor3uiv(UInt32* v);
			[ThreadStatic]
			internal static glColor3uiv pglColor3uiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glColor3us(UInt16 red, UInt16 green, UInt16 blue);
			[ThreadStatic]
			internal static glColor3us pglColor3us = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glColor3usv(UInt16* v);
			[ThreadStatic]
			internal static glColor3usv pglColor3usv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glColor4b(sbyte red, sbyte green, sbyte blue, sbyte alpha);
			[ThreadStatic]
			internal static glColor4b pglColor4b = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glColor4bv(sbyte* v);
			[ThreadStatic]
			internal static glColor4bv pglColor4bv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glColor4d(double red, double green, double blue, double alpha);
			[ThreadStatic]
			internal static glColor4d pglColor4d = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glColor4dv(double* v);
			[ThreadStatic]
			internal static glColor4dv pglColor4dv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glColor4f(float red, float green, float blue, float alpha);
			[ThreadStatic]
			internal static glColor4f pglColor4f = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glColor4fv(float* v);
			[ThreadStatic]
			internal static glColor4fv pglColor4fv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glColor4i(int red, int green, int blue, int alpha);
			[ThreadStatic]
			internal static glColor4i pglColor4i = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glColor4iv(int* v);
			[ThreadStatic]
			internal static glColor4iv pglColor4iv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glColor4s(Int16 red, Int16 green, Int16 blue, Int16 alpha);
			[ThreadStatic]
			internal static glColor4s pglColor4s = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glColor4sv(Int16* v);
			[ThreadStatic]
			internal static glColor4sv pglColor4sv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glColor4ub(byte red, byte green, byte blue, byte alpha);
			[ThreadStatic]
			internal static glColor4ub pglColor4ub = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glColor4ubv(byte* v);
			[ThreadStatic]
			internal static glColor4ubv pglColor4ubv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glColor4ui(UInt32 red, UInt32 green, UInt32 blue, UInt32 alpha);
			[ThreadStatic]
			internal static glColor4ui pglColor4ui = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glColor4uiv(UInt32* v);
			[ThreadStatic]
			internal static glColor4uiv pglColor4uiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glColor4us(UInt16 red, UInt16 green, UInt16 blue, UInt16 alpha);
			[ThreadStatic]
			internal static glColor4us pglColor4us = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glColor4usv(UInt16* v);
			[ThreadStatic]
			internal static glColor4usv pglColor4usv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glColorMask(bool red, bool green, bool blue, bool alpha);
			[ThreadStatic]
			internal static glColorMask pglColorMask = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glColorMaski(UInt32 index, bool r, bool g, bool b, bool a);
			[ThreadStatic]
			internal static glColorMaski pglColorMaski = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glColorMaterial(int face, int mode);
			[ThreadStatic]
			internal static glColorMaterial pglColorMaterial = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glColorP3ui(int type, UInt32 color);
			[ThreadStatic]
			internal static glColorP3ui pglColorP3ui = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glColorP3uiv(int type, UInt32* color);
			[ThreadStatic]
			internal static glColorP3uiv pglColorP3uiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glColorP4ui(int type, UInt32 color);
			[ThreadStatic]
			internal static glColorP4ui pglColorP4ui = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glColorP4uiv(int type, UInt32* color);
			[ThreadStatic]
			internal static glColorP4uiv pglColorP4uiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glColorPointer(int size, int type, Int32 stride, IntPtr pointer);
			[ThreadStatic]
			internal static glColorPointer pglColorPointer = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glColorSubTable(int target, Int32 start, Int32 count, int format, int type, IntPtr data);
			[ThreadStatic]
			internal static glColorSubTable pglColorSubTable = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glColorTable(int target, int internalformat, Int32 width, int format, int type, IntPtr table);
			[ThreadStatic]
			internal static glColorTable pglColorTable = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glColorTableParameterfv(int target, int pname, float* @params);
			[ThreadStatic]
			internal static glColorTableParameterfv pglColorTableParameterfv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glColorTableParameteriv(int target, int pname, int* @params);
			[ThreadStatic]
			internal static glColorTableParameteriv pglColorTableParameteriv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glCompileShader(UInt32 shader);
			[ThreadStatic]
			internal static glCompileShader pglCompileShader = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glCompressedTexImage1D(int target, int level, int internalformat, Int32 width, int border, Int32 imageSize, IntPtr data);
			[ThreadStatic]
			internal static glCompressedTexImage1D pglCompressedTexImage1D = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glCompressedTexImage2D(int target, int level, int internalformat, Int32 width, Int32 height, int border, Int32 imageSize, IntPtr data);
			[ThreadStatic]
			internal static glCompressedTexImage2D pglCompressedTexImage2D = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glCompressedTexImage3D(int target, int level, int internalformat, Int32 width, Int32 height, Int32 depth, int border, Int32 imageSize, IntPtr data);
			[ThreadStatic]
			internal static glCompressedTexImage3D pglCompressedTexImage3D = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glCompressedTexSubImage1D(int target, int level, int xoffset, Int32 width, int format, Int32 imageSize, IntPtr data);
			[ThreadStatic]
			internal static glCompressedTexSubImage1D pglCompressedTexSubImage1D = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glCompressedTexSubImage2D(int target, int level, int xoffset, int yoffset, Int32 width, Int32 height, int format, Int32 imageSize, IntPtr data);
			[ThreadStatic]
			internal static glCompressedTexSubImage2D pglCompressedTexSubImage2D = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glCompressedTexSubImage3D(int target, int level, int xoffset, int yoffset, int zoffset, Int32 width, Int32 height, Int32 depth, int format, Int32 imageSize, IntPtr data);
			[ThreadStatic]
			internal static glCompressedTexSubImage3D pglCompressedTexSubImage3D = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glConvolutionFilter1D(int target, int internalformat, Int32 width, int format, int type, IntPtr image);
			[ThreadStatic]
			internal static glConvolutionFilter1D pglConvolutionFilter1D = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glConvolutionFilter2D(int target, int internalformat, Int32 width, Int32 height, int format, int type, IntPtr image);
			[ThreadStatic]
			internal static glConvolutionFilter2D pglConvolutionFilter2D = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glConvolutionParameterf(int target, int pname, float @params);
			[ThreadStatic]
			internal static glConvolutionParameterf pglConvolutionParameterf = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glConvolutionParameterfv(int target, int pname, float* @params);
			[ThreadStatic]
			internal static glConvolutionParameterfv pglConvolutionParameterfv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glConvolutionParameteri(int target, int pname, int @params);
			[ThreadStatic]
			internal static glConvolutionParameteri pglConvolutionParameteri = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glConvolutionParameteriv(int target, int pname, int* @params);
			[ThreadStatic]
			internal static glConvolutionParameteriv pglConvolutionParameteriv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glCopyBufferSubData(int readTarget, int writeTarget, IntPtr readOffset, IntPtr writeOffset, UInt32 size);
			[ThreadStatic]
			internal static glCopyBufferSubData pglCopyBufferSubData = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glCopyColorSubTable(int target, Int32 start, int x, int y, Int32 width);
			[ThreadStatic]
			internal static glCopyColorSubTable pglCopyColorSubTable = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glCopyColorTable(int target, int internalformat, int x, int y, Int32 width);
			[ThreadStatic]
			internal static glCopyColorTable pglCopyColorTable = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glCopyConvolutionFilter1D(int target, int internalformat, int x, int y, Int32 width);
			[ThreadStatic]
			internal static glCopyConvolutionFilter1D pglCopyConvolutionFilter1D = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glCopyConvolutionFilter2D(int target, int internalformat, int x, int y, Int32 width, Int32 height);
			[ThreadStatic]
			internal static glCopyConvolutionFilter2D pglCopyConvolutionFilter2D = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glCopyPixels(int x, int y, Int32 width, Int32 height, int type);
			[ThreadStatic]
			internal static glCopyPixels pglCopyPixels = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glCopyTexImage1D(int target, int level, int internalformat, int x, int y, Int32 width, int border);
			[ThreadStatic]
			internal static glCopyTexImage1D pglCopyTexImage1D = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glCopyTexImage2D(int target, int level, int internalformat, int x, int y, Int32 width, Int32 height, int border);
			[ThreadStatic]
			internal static glCopyTexImage2D pglCopyTexImage2D = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glCopyTexSubImage1D(int target, int level, int xoffset, int x, int y, Int32 width);
			[ThreadStatic]
			internal static glCopyTexSubImage1D pglCopyTexSubImage1D = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glCopyTexSubImage2D(int target, int level, int xoffset, int yoffset, int x, int y, Int32 width, Int32 height);
			[ThreadStatic]
			internal static glCopyTexSubImage2D pglCopyTexSubImage2D = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glCopyTexSubImage3D(int target, int level, int xoffset, int yoffset, int zoffset, int x, int y, Int32 width, Int32 height);
			[ThreadStatic]
			internal static glCopyTexSubImage3D pglCopyTexSubImage3D = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate UInt32 glCreateProgram();
			[ThreadStatic]
			internal static glCreateProgram pglCreateProgram = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate UInt32 glCreateShader(int type);
			[ThreadStatic]
			internal static glCreateShader pglCreateShader = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate UInt32 glCreateShaderProgramv(int type, Int32 count, string[] strings);
			[ThreadStatic]
			internal static glCreateShaderProgramv pglCreateShaderProgramv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glCullFace(int mode);
			[ThreadStatic]
			internal static glCullFace pglCullFace = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glDeleteBuffers(Int32 n, UInt32* buffers);
			[ThreadStatic]
			internal static glDeleteBuffers pglDeleteBuffers = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glDeleteFramebuffers(Int32 n, UInt32* framebuffers);
			[ThreadStatic]
			internal static glDeleteFramebuffers pglDeleteFramebuffers = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glDeleteLists(UInt32 list, Int32 range);
			[ThreadStatic]
			internal static glDeleteLists pglDeleteLists = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glDeleteProgram(UInt32 program);
			[ThreadStatic]
			internal static glDeleteProgram pglDeleteProgram = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glDeleteProgramPipelines(Int32 n, UInt32* pipelines);
			[ThreadStatic]
			internal static glDeleteProgramPipelines pglDeleteProgramPipelines = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glDeleteQueries(Int32 n, UInt32* ids);
			[ThreadStatic]
			internal static glDeleteQueries pglDeleteQueries = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glDeleteRenderbuffers(Int32 n, UInt32* renderbuffers);
			[ThreadStatic]
			internal static glDeleteRenderbuffers pglDeleteRenderbuffers = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glDeleteSamplers(Int32 count, UInt32* samplers);
			[ThreadStatic]
			internal static glDeleteSamplers pglDeleteSamplers = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glDeleteShader(UInt32 shader);
			[ThreadStatic]
			internal static glDeleteShader pglDeleteShader = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glDeleteSync(int sync);
			[ThreadStatic]
			internal static glDeleteSync pglDeleteSync = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glDeleteTextures(Int32 n, UInt32* textures);
			[ThreadStatic]
			internal static glDeleteTextures pglDeleteTextures = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glDeleteTransformFeedbacks(Int32 n, UInt32* ids);
			[ThreadStatic]
			internal static glDeleteTransformFeedbacks pglDeleteTransformFeedbacks = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glDeleteVertexArrays(Int32 n, UInt32* arrays);
			[ThreadStatic]
			internal static glDeleteVertexArrays pglDeleteVertexArrays = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glDepthFunc(int func);
			[ThreadStatic]
			internal static glDepthFunc pglDepthFunc = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glDepthMask(bool flag);
			[ThreadStatic]
			internal static glDepthMask pglDepthMask = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glDepthRange(double near, double far);
			[ThreadStatic]
			internal static glDepthRange pglDepthRange = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glDepthRangeArrayv(UInt32 first, Int32 count, double* v);
			[ThreadStatic]
			internal static glDepthRangeArrayv pglDepthRangeArrayv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glDepthRangef(float n, float f);
			[ThreadStatic]
			internal static glDepthRangef pglDepthRangef = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glDepthRangeIndexed(UInt32 index, double n, double f);
			[ThreadStatic]
			internal static glDepthRangeIndexed pglDepthRangeIndexed = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glDetachShader(UInt32 program, UInt32 shader);
			[ThreadStatic]
			internal static glDetachShader pglDetachShader = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glDisable(int cap);
			[ThreadStatic]
			internal static glDisable pglDisable = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glDisableClientState(int array);
			[ThreadStatic]
			internal static glDisableClientState pglDisableClientState = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glDisablei(int target, UInt32 index);
			[ThreadStatic]
			internal static glDisablei pglDisablei = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glDisableVertexAttribArray(UInt32 index);
			[ThreadStatic]
			internal static glDisableVertexAttribArray pglDisableVertexAttribArray = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glDrawArrays(int mode, int first, Int32 count);
			[ThreadStatic]
			internal static glDrawArrays pglDrawArrays = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glDrawArraysIndirect(int mode, IntPtr indirect);
			[ThreadStatic]
			internal static glDrawArraysIndirect pglDrawArraysIndirect = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glDrawArraysInstanced(int mode, int first, Int32 count, Int32 primcount);
			[ThreadStatic]
			internal static glDrawArraysInstanced pglDrawArraysInstanced = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glDrawArraysInstancedBaseInstance(int mode, int first, Int32 count, Int32 primcount, UInt32 baseinstance);
			[ThreadStatic]
			internal static glDrawArraysInstancedBaseInstance pglDrawArraysInstancedBaseInstance = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glDrawBuffer(int mode);
			[ThreadStatic]
			internal static glDrawBuffer pglDrawBuffer = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glDrawBuffers(Int32 n, int* bufs);
			[ThreadStatic]
			internal static glDrawBuffers pglDrawBuffers = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glDrawElements(int mode, Int32 count, int type, IntPtr indices);
			[ThreadStatic]
			internal static glDrawElements pglDrawElements = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glDrawElementsBaseVertex(int mode, Int32 count, int type, IntPtr indices, int basevertex);
			[ThreadStatic]
			internal static glDrawElementsBaseVertex pglDrawElementsBaseVertex = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glDrawElementsIndirect(int mode, int type, IntPtr indirect);
			[ThreadStatic]
			internal static glDrawElementsIndirect pglDrawElementsIndirect = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glDrawElementsInstanced(int mode, Int32 count, int type, IntPtr indices, Int32 primcount);
			[ThreadStatic]
			internal static glDrawElementsInstanced pglDrawElementsInstanced = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glDrawElementsInstancedBaseInstance(int mode, Int32 count, int type, IntPtr indices, Int32 primcount, UInt32 baseinstance);
			[ThreadStatic]
			internal static glDrawElementsInstancedBaseInstance pglDrawElementsInstancedBaseInstance = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glDrawElementsInstancedBaseVertex(int mode, Int32 count, int type, IntPtr indices, Int32 primcount, int basevertex);
			[ThreadStatic]
			internal static glDrawElementsInstancedBaseVertex pglDrawElementsInstancedBaseVertex = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glDrawElementsInstancedBaseVertexBaseInstance(int mode, Int32 count, int type, IntPtr indices, Int32 primcount, int basevertex, UInt32 baseinstance);
			[ThreadStatic]
			internal static glDrawElementsInstancedBaseVertexBaseInstance pglDrawElementsInstancedBaseVertexBaseInstance = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glDrawPixels(Int32 width, Int32 height, int format, int type, IntPtr pixels);
			[ThreadStatic]
			internal static glDrawPixels pglDrawPixels = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glDrawRangeElements(int mode, UInt32 start, UInt32 end, Int32 count, int type, IntPtr indices);
			[ThreadStatic]
			internal static glDrawRangeElements pglDrawRangeElements = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glDrawRangeElementsBaseVertex(int mode, UInt32 start, UInt32 end, Int32 count, int type, IntPtr indices, int basevertex);
			[ThreadStatic]
			internal static glDrawRangeElementsBaseVertex pglDrawRangeElementsBaseVertex = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glDrawTransformFeedback(int mode, UInt32 id);
			[ThreadStatic]
			internal static glDrawTransformFeedback pglDrawTransformFeedback = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glDrawTransformFeedbackInstanced(int mode, UInt32 id, Int32 primcount);
			[ThreadStatic]
			internal static glDrawTransformFeedbackInstanced pglDrawTransformFeedbackInstanced = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glDrawTransformFeedbackStream(int mode, UInt32 id, UInt32 stream);
			[ThreadStatic]
			internal static glDrawTransformFeedbackStream pglDrawTransformFeedbackStream = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glDrawTransformFeedbackStreamInstanced(int mode, UInt32 id, UInt32 stream, Int32 primcount);
			[ThreadStatic]
			internal static glDrawTransformFeedbackStreamInstanced pglDrawTransformFeedbackStreamInstanced = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glEdgeFlag(bool flag);
			[ThreadStatic]
			internal static glEdgeFlag pglEdgeFlag = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glEdgeFlagPointer(Int32 stride, IntPtr pointer);
			[ThreadStatic]
			internal static glEdgeFlagPointer pglEdgeFlagPointer = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glEdgeFlagv(bool* flag);
			[ThreadStatic]
			internal static glEdgeFlagv pglEdgeFlagv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glEnable(int cap);
			[ThreadStatic]
			internal static glEnable pglEnable = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glEnableClientState(int array);
			[ThreadStatic]
			internal static glEnableClientState pglEnableClientState = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glEnablei(int target, UInt32 index);
			[ThreadStatic]
			internal static glEnablei pglEnablei = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glEnableVertexAttribArray(UInt32 index);
			[ThreadStatic]
			internal static glEnableVertexAttribArray pglEnableVertexAttribArray = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glEnd();
			[ThreadStatic]
			internal static glEnd pglEnd = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glEndConditionalRender();
			[ThreadStatic]
			internal static glEndConditionalRender pglEndConditionalRender = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glEndList();
			[ThreadStatic]
			internal static glEndList pglEndList = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glEndQuery(int target);
			[ThreadStatic]
			internal static glEndQuery pglEndQuery = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glEndQueryIndexed(int target, UInt32 index);
			[ThreadStatic]
			internal static glEndQueryIndexed pglEndQueryIndexed = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glEndTransformFeedback();
			[ThreadStatic]
			internal static glEndTransformFeedback pglEndTransformFeedback = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glEvalCoord1d(double u);
			[ThreadStatic]
			internal static glEvalCoord1d pglEvalCoord1d = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glEvalCoord1dv(double* u);
			[ThreadStatic]
			internal static glEvalCoord1dv pglEvalCoord1dv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glEvalCoord1f(float u);
			[ThreadStatic]
			internal static glEvalCoord1f pglEvalCoord1f = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glEvalCoord1fv(float* u);
			[ThreadStatic]
			internal static glEvalCoord1fv pglEvalCoord1fv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glEvalCoord2d(double u, double v);
			[ThreadStatic]
			internal static glEvalCoord2d pglEvalCoord2d = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glEvalCoord2dv(double* u);
			[ThreadStatic]
			internal static glEvalCoord2dv pglEvalCoord2dv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glEvalCoord2f(float u, float v);
			[ThreadStatic]
			internal static glEvalCoord2f pglEvalCoord2f = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glEvalCoord2fv(float* u);
			[ThreadStatic]
			internal static glEvalCoord2fv pglEvalCoord2fv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glEvalMesh1(int mode, int i1, int i2);
			[ThreadStatic]
			internal static glEvalMesh1 pglEvalMesh1 = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glEvalMesh2(int mode, int i1, int i2, int j1, int j2);
			[ThreadStatic]
			internal static glEvalMesh2 pglEvalMesh2 = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glEvalPoint1(int i);
			[ThreadStatic]
			internal static glEvalPoint1 pglEvalPoint1 = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glEvalPoint2(int i, int j);
			[ThreadStatic]
			internal static glEvalPoint2 pglEvalPoint2 = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glFeedbackBuffer(Int32 size, int type, [Out] float* buffer);
			[ThreadStatic]
			internal static glFeedbackBuffer pglFeedbackBuffer = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate int glFenceSync(int condition, uint flags);
			[ThreadStatic]
			internal static glFenceSync pglFenceSync = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glFinish();
			[ThreadStatic]
			internal static glFinish pglFinish = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glFlush();
			[ThreadStatic]
			internal static glFlush pglFlush = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glFlushMappedBufferRange(int target, IntPtr offset, UInt32 length);
			[ThreadStatic]
			internal static glFlushMappedBufferRange pglFlushMappedBufferRange = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glFogCoordd(double coord);
			[ThreadStatic]
			internal static glFogCoordd pglFogCoordd = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glFogCoorddv(double* coord);
			[ThreadStatic]
			internal static glFogCoorddv pglFogCoorddv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glFogCoordf(float coord);
			[ThreadStatic]
			internal static glFogCoordf pglFogCoordf = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glFogCoordfv(float* coord);
			[ThreadStatic]
			internal static glFogCoordfv pglFogCoordfv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glFogCoordPointer(int type, Int32 stride, IntPtr pointer);
			[ThreadStatic]
			internal static glFogCoordPointer pglFogCoordPointer = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glFogf(int pname, float param);
			[ThreadStatic]
			internal static glFogf pglFogf = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glFogfv(int pname, float* @params);
			[ThreadStatic]
			internal static glFogfv pglFogfv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glFogi(int pname, int param);
			[ThreadStatic]
			internal static glFogi pglFogi = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glFogiv(int pname, int* @params);
			[ThreadStatic]
			internal static glFogiv pglFogiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glFramebufferRenderbuffer(int target, int attachment, int renderbuffertarget, UInt32 renderbuffer);
			[ThreadStatic]
			internal static glFramebufferRenderbuffer pglFramebufferRenderbuffer = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glFramebufferTexture(int target, int attachment, UInt32 texture, int level);
			[ThreadStatic]
			internal static glFramebufferTexture pglFramebufferTexture = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glFramebufferTexture1D(int target, int attachment, int textarget, UInt32 texture, int level);
			[ThreadStatic]
			internal static glFramebufferTexture1D pglFramebufferTexture1D = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glFramebufferTexture2D(int target, int attachment, int textarget, UInt32 texture, int level);
			[ThreadStatic]
			internal static glFramebufferTexture2D pglFramebufferTexture2D = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glFramebufferTexture3D(int target, int attachment, int textarget, UInt32 texture, int level, int zoffset);
			[ThreadStatic]
			internal static glFramebufferTexture3D pglFramebufferTexture3D = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glFramebufferTextureLayer(int target, int attachment, UInt32 texture, int level, int layer);
			[ThreadStatic]
			internal static glFramebufferTextureLayer pglFramebufferTextureLayer = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glFrontFace(int mode);
			[ThreadStatic]
			internal static glFrontFace pglFrontFace = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glFrustum(double left, double right, double bottom, double top, double zNear, double zFar);
			[ThreadStatic]
			internal static glFrustum pglFrustum = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGenBuffers(Int32 n, [Out] UInt32* buffers);
			[ThreadStatic]
			internal static glGenBuffers pglGenBuffers = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glGenerateMipmap(int target);
			[ThreadStatic]
			internal static glGenerateMipmap pglGenerateMipmap = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGenFramebuffers(Int32 n, [Out] UInt32* framebuffers);
			[ThreadStatic]
			internal static glGenFramebuffers pglGenFramebuffers = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate UInt32 glGenLists(Int32 range);
			[ThreadStatic]
			internal static glGenLists pglGenLists = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGenProgramPipelines(Int32 n, [Out] UInt32* pipelines);
			[ThreadStatic]
			internal static glGenProgramPipelines pglGenProgramPipelines = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGenQueries(Int32 n, [Out] UInt32* ids);
			[ThreadStatic]
			internal static glGenQueries pglGenQueries = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGenRenderbuffers(Int32 n, [Out] UInt32* renderbuffers);
			[ThreadStatic]
			internal static glGenRenderbuffers pglGenRenderbuffers = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGenSamplers(Int32 count, [Out] UInt32* samplers);
			[ThreadStatic]
			internal static glGenSamplers pglGenSamplers = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGenTextures(Int32 n, [Out] UInt32* textures);
			[ThreadStatic]
			internal static glGenTextures pglGenTextures = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGenTransformFeedbacks(Int32 n, [Out] UInt32* ids);
			[ThreadStatic]
			internal static glGenTransformFeedbacks pglGenTransformFeedbacks = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGenVertexArrays(Int32 n, [Out] UInt32* arrays);
			[ThreadStatic]
			internal static glGenVertexArrays pglGenVertexArrays = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetActiveAtomicCounterBufferiv(UInt32 program, UInt32 bufferIndex, int pname, [Out] int* @params);
			[ThreadStatic]
			internal static glGetActiveAtomicCounterBufferiv pglGetActiveAtomicCounterBufferiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetActiveAttrib(UInt32 program, UInt32 index, Int32 bufSize, [Out] Int32* length, [Out] int* size, [Out] int* type, [Out] StringBuilder name);
			[ThreadStatic]
			internal static glGetActiveAttrib pglGetActiveAttrib = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetActiveSubroutineName(UInt32 program, int shadertype, UInt32 index, Int32 bufsize, [Out] Int32* length, [Out] StringBuilder name);
			[ThreadStatic]
			internal static glGetActiveSubroutineName pglGetActiveSubroutineName = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetActiveSubroutineUniformiv(UInt32 program, int shadertype, UInt32 index, int pname, [Out] int* values);
			[ThreadStatic]
			internal static glGetActiveSubroutineUniformiv pglGetActiveSubroutineUniformiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetActiveSubroutineUniformName(UInt32 program, int shadertype, UInt32 index, Int32 bufsize, [Out] Int32* length, [Out] StringBuilder name);
			[ThreadStatic]
			internal static glGetActiveSubroutineUniformName pglGetActiveSubroutineUniformName = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetActiveUniform(UInt32 program, UInt32 index, Int32 bufSize, [Out] Int32* length, [Out] int* size, [Out] int* type, StringBuilder name);
			[ThreadStatic]
			internal static glGetActiveUniform pglGetActiveUniform = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetActiveUniformBlockiv(UInt32 program, UInt32 uniformBlockIndex, int pname, [Out] int* @params);
			[ThreadStatic]
			internal static glGetActiveUniformBlockiv pglGetActiveUniformBlockiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetActiveUniformBlockName(UInt32 program, UInt32 uniformBlockIndex, Int32 bufSize, [Out] Int32* length, [Out] StringBuilder uniformBlockName);
			[ThreadStatic]
			internal static glGetActiveUniformBlockName pglGetActiveUniformBlockName = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetActiveUniformName(UInt32 program, UInt32 uniformIndex, Int32 bufSize, [Out] Int32* length, [Out] StringBuilder uniformName);
			[ThreadStatic]
			internal static glGetActiveUniformName pglGetActiveUniformName = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetActiveUniformsiv(UInt32 program, Int32 uniformCount, UInt32* uniformIndices, int pname, [Out] int* @params);
			[ThreadStatic]
			internal static glGetActiveUniformsiv pglGetActiveUniformsiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetAttachedShaders(UInt32 program, Int32 maxCount, [Out] Int32* count, [Out] UInt32* obj);
			[ThreadStatic]
			internal static glGetAttachedShaders pglGetAttachedShaders = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate int glGetAttribLocation(UInt32 program, string name);
			[ThreadStatic]
			internal static glGetAttribLocation pglGetAttribLocation = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetBooleani_v(int target, UInt32 index, [Out] bool* data);
			[ThreadStatic]
			internal static glGetBooleani_v pglGetBooleani_v = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetBooleanv(int pname, [Out] bool* @params);
			[ThreadStatic]
			internal static glGetBooleanv pglGetBooleanv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetBufferParameteri64v(int target, int pname, [Out] Int64* @params);
			[ThreadStatic]
			internal static glGetBufferParameteri64v pglGetBufferParameteri64v = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetBufferParameteriv(int target, int pname, [Out] int* @params);
			[ThreadStatic]
			internal static glGetBufferParameteriv pglGetBufferParameteriv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetBufferPointerv(int target, int pname, [Out] IntPtr* @params);
			[ThreadStatic]
			internal static glGetBufferPointerv pglGetBufferPointerv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glGetBufferSubData(int target, IntPtr offset, UInt32 size, [Out] IntPtr data);
			[ThreadStatic]
			internal static glGetBufferSubData pglGetBufferSubData = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetClipPlane(int plane, [Out] double* equation);
			[ThreadStatic]
			internal static glGetClipPlane pglGetClipPlane = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glGetColorTable(int target, int format, int type, [Out] IntPtr table);
			[ThreadStatic]
			internal static glGetColorTable pglGetColorTable = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetColorTableParameterfv(int target, int pname, [Out] float* @params);
			[ThreadStatic]
			internal static glGetColorTableParameterfv pglGetColorTableParameterfv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetColorTableParameteriv(int target, int pname, [Out] int* @params);
			[ThreadStatic]
			internal static glGetColorTableParameteriv pglGetColorTableParameteriv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glGetCompressedTexImage(int target, int level, [Out] IntPtr img);
			[ThreadStatic]
			internal static glGetCompressedTexImage pglGetCompressedTexImage = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glGetConvolutionFilter(int target, int format, int type, [Out] IntPtr image);
			[ThreadStatic]
			internal static glGetConvolutionFilter pglGetConvolutionFilter = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetConvolutionParameterfv(int target, int pname, [Out] float* @params);
			[ThreadStatic]
			internal static glGetConvolutionParameterfv pglGetConvolutionParameterfv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetConvolutionParameteriv(int target, int pname, [Out] int* @params);
			[ThreadStatic]
			internal static glGetConvolutionParameteriv pglGetConvolutionParameteriv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetDoublei_v(int target, UInt32 index, [Out] double* data);
			[ThreadStatic]
			internal static glGetDoublei_v pglGetDoublei_v = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetDoublev(int pname, [Out] double* @params);
			[ThreadStatic]
			internal static glGetDoublev pglGetDoublev = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate int glGetError();
			[ThreadStatic]
			internal static glGetError pglGetError = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetFloati_v(int target, UInt32 index, [Out] float* data);
			[ThreadStatic]
			internal static glGetFloati_v pglGetFloati_v = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetFloatv(int pname, [Out] float* @params);
			[ThreadStatic]
			internal static glGetFloatv pglGetFloatv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate int glGetFragDataIndex(UInt32 program, string name);
			[ThreadStatic]
			internal static glGetFragDataIndex pglGetFragDataIndex = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate int glGetFragDataLocation(UInt32 program, string name);
			[ThreadStatic]
			internal static glGetFragDataLocation pglGetFragDataLocation = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetFramebufferAttachmentParameteriv(int target, int attachment, int pname, [Out] int* @params);
			[ThreadStatic]
			internal static glGetFramebufferAttachmentParameteriv pglGetFramebufferAttachmentParameteriv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glGetHistogram(int target, bool reset, int format, int type, [Out] IntPtr values);
			[ThreadStatic]
			internal static glGetHistogram pglGetHistogram = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetHistogramParameterfv(int target, int pname, [Out] float* @params);
			[ThreadStatic]
			internal static glGetHistogramParameterfv pglGetHistogramParameterfv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetHistogramParameteriv(int target, int pname, [Out] int* @params);
			[ThreadStatic]
			internal static glGetHistogramParameteriv pglGetHistogramParameteriv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetInteger64i_v(int target, UInt32 index, [Out] Int64* data);
			[ThreadStatic]
			internal static glGetInteger64i_v pglGetInteger64i_v = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetInteger64v(int pname, [Out] Int64* @params);
			[ThreadStatic]
			internal static glGetInteger64v pglGetInteger64v = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetIntegeri_v(int target, UInt32 index, [Out] int* data);
			[ThreadStatic]
			internal static glGetIntegeri_v pglGetIntegeri_v = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetIntegerv(int pname, [Out] int* @params);
			[ThreadStatic]
			internal static glGetIntegerv pglGetIntegerv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetInternalformativ(int target, int internalformat, int pname, Int32 bufSize, [Out] int* @params);
			[ThreadStatic]
			internal static glGetInternalformativ pglGetInternalformativ = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetLightfv(int light, int pname, [Out] float* @params);
			[ThreadStatic]
			internal static glGetLightfv pglGetLightfv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetLightiv(int light, int pname, [Out] int* @params);
			[ThreadStatic]
			internal static glGetLightiv pglGetLightiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetMapdv(int target, int query, [Out] double* v);
			[ThreadStatic]
			internal static glGetMapdv pglGetMapdv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetMapfv(int target, int query, [Out] float* v);
			[ThreadStatic]
			internal static glGetMapfv pglGetMapfv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetMapiv(int target, int query, [Out] int* v);
			[ThreadStatic]
			internal static glGetMapiv pglGetMapiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetMaterialfv(int face, int pname, [Out] float* @params);
			[ThreadStatic]
			internal static glGetMaterialfv pglGetMaterialfv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetMaterialiv(int face, int pname, [Out] int* @params);
			[ThreadStatic]
			internal static glGetMaterialiv pglGetMaterialiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glGetMinmax(int target, bool reset, int format, int type, [Out] IntPtr values);
			[ThreadStatic]
			internal static glGetMinmax pglGetMinmax = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetMinmaxParameterfv(int target, int pname, [Out] float* @params);
			[ThreadStatic]
			internal static glGetMinmaxParameterfv pglGetMinmaxParameterfv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetMinmaxParameteriv(int target, int pname, [Out] int* @params);
			[ThreadStatic]
			internal static glGetMinmaxParameteriv pglGetMinmaxParameteriv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetMultisamplefv(int pname, UInt32 index, [Out] float* val);
			[ThreadStatic]
			internal static glGetMultisamplefv pglGetMultisamplefv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetPixelMapfv(int map, [Out] float* values);
			[ThreadStatic]
			internal static glGetPixelMapfv pglGetPixelMapfv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetPixelMapuiv(int map, [Out] UInt32* values);
			[ThreadStatic]
			internal static glGetPixelMapuiv pglGetPixelMapuiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetPixelMapusv(int map, [Out] UInt16* values);
			[ThreadStatic]
			internal static glGetPixelMapusv pglGetPixelMapusv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetPointerv(int pname, [Out] IntPtr* @params);
			[ThreadStatic]
			internal static glGetPointerv pglGetPointerv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetPolygonStipple([Out] byte* mask);
			[ThreadStatic]
			internal static glGetPolygonStipple pglGetPolygonStipple = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetProgramBinary(UInt32 program, Int32 bufSize, [Out] Int32* length, [Out] int* binaryFormat, [Out] IntPtr binary);
			[ThreadStatic]
			internal static glGetProgramBinary pglGetProgramBinary = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetProgramInfoLog(UInt32 program, Int32 bufSize, [Out] Int32* length, [Out] StringBuilder infoLog);
			[ThreadStatic]
			internal static glGetProgramInfoLog pglGetProgramInfoLog = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetProgramiv(UInt32 program, int pname, [Out] int* @params);
			[ThreadStatic]
			internal static glGetProgramiv pglGetProgramiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetProgramPipelineInfoLog(UInt32 pipeline, Int32 bufSize, [Out] Int32* length, [Out] StringBuilder infoLog);
			[ThreadStatic]
			internal static glGetProgramPipelineInfoLog pglGetProgramPipelineInfoLog = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetProgramPipelineiv(UInt32 pipeline, int pname, [Out] int* @params);
			[ThreadStatic]
			internal static glGetProgramPipelineiv pglGetProgramPipelineiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetProgramStageiv(UInt32 program, int shadertype, int pname, [Out] int* values);
			[ThreadStatic]
			internal static glGetProgramStageiv pglGetProgramStageiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetQueryIndexediv(int target, UInt32 index, int pname, [Out] int* @params);
			[ThreadStatic]
			internal static glGetQueryIndexediv pglGetQueryIndexediv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetQueryiv(int target, int pname, [Out] int* @params);
			[ThreadStatic]
			internal static glGetQueryiv pglGetQueryiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetQueryObjecti64v(UInt32 id, int pname, [Out] Int64* @params);
			[ThreadStatic]
			internal static glGetQueryObjecti64v pglGetQueryObjecti64v = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetQueryObjectiv(UInt32 id, int pname, [Out] int* @params);
			[ThreadStatic]
			internal static glGetQueryObjectiv pglGetQueryObjectiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetQueryObjectui64v(UInt32 id, int pname, [Out] UInt64* @params);
			[ThreadStatic]
			internal static glGetQueryObjectui64v pglGetQueryObjectui64v = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetQueryObjectuiv(UInt32 id, int pname, [Out] UInt32* @params);
			[ThreadStatic]
			internal static glGetQueryObjectuiv pglGetQueryObjectuiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetRenderbufferParameteriv(int target, int pname, [Out] int* @params);
			[ThreadStatic]
			internal static glGetRenderbufferParameteriv pglGetRenderbufferParameteriv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetSamplerParameterfv(UInt32 sampler, int pname, [Out] float* @params);
			[ThreadStatic]
			internal static glGetSamplerParameterfv pglGetSamplerParameterfv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetSamplerParameterIiv(UInt32 sampler, int pname, [Out] int* @params);
			[ThreadStatic]
			internal static glGetSamplerParameterIiv pglGetSamplerParameterIiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetSamplerParameterIuiv(UInt32 sampler, int pname, [Out] UInt32* @params);
			[ThreadStatic]
			internal static glGetSamplerParameterIuiv pglGetSamplerParameterIuiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetSamplerParameteriv(UInt32 sampler, int pname, [Out] int* @params);
			[ThreadStatic]
			internal static glGetSamplerParameteriv pglGetSamplerParameteriv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glGetSeparableFilter(int target, int format, int type, [Out] IntPtr row, [Out] IntPtr column, [Out] IntPtr span);
			[ThreadStatic]
			internal static glGetSeparableFilter pglGetSeparableFilter = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetShaderInfoLog(UInt32 shader, Int32 bufSize, [Out] Int32* length, [Out] StringBuilder infoLog);
			[ThreadStatic]
			internal static glGetShaderInfoLog pglGetShaderInfoLog = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetShaderiv(UInt32 shader, int pname, [Out] int* @params);
			[ThreadStatic]
			internal static glGetShaderiv pglGetShaderiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetShaderPrecisionFormat(int shadertype, int precisiontype, [Out] int* range, [Out] int* precision);
			[ThreadStatic]
			internal static glGetShaderPrecisionFormat pglGetShaderPrecisionFormat = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetShaderSource(UInt32 shader, Int32 bufSize, [Out] Int32* length, [Out] StringBuilder source);
			[ThreadStatic]
			internal static glGetShaderSource pglGetShaderSource = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate IntPtr glGetString(int name);
			[ThreadStatic]
			internal static glGetString pglGetString = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate IntPtr glGetStringi(int name, UInt32 index);
			[ThreadStatic]
			internal static glGetStringi pglGetStringi = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate UInt32 glGetSubroutineIndex(UInt32 program, int shadertype, string name);
			[ThreadStatic]
			internal static glGetSubroutineIndex pglGetSubroutineIndex = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate int glGetSubroutineUniformLocation(UInt32 program, int shadertype, string name);
			[ThreadStatic]
			internal static glGetSubroutineUniformLocation pglGetSubroutineUniformLocation = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetSynciv(int sync, int pname, Int32 bufSize, [Out] Int32* length, [Out] int* values);
			[ThreadStatic]
			internal static glGetSynciv pglGetSynciv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetTexEnvfv(int target, int pname, [Out] float* @params);
			[ThreadStatic]
			internal static glGetTexEnvfv pglGetTexEnvfv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetTexEnviv(int target, int pname, [Out] int* @params);
			[ThreadStatic]
			internal static glGetTexEnviv pglGetTexEnviv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetTexGendv(int coord, int pname, [Out] double* @params);
			[ThreadStatic]
			internal static glGetTexGendv pglGetTexGendv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetTexGenfv(int coord, int pname, [Out] float* @params);
			[ThreadStatic]
			internal static glGetTexGenfv pglGetTexGenfv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetTexGeniv(int coord, int pname, [Out] int* @params);
			[ThreadStatic]
			internal static glGetTexGeniv pglGetTexGeniv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glGetTexImage(int target, int level, int format, int type, [Out] IntPtr pixels);
			[ThreadStatic]
			internal static glGetTexImage pglGetTexImage = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetTexLevelParameterfv(int target, int level, int pname, [Out] float* @params);
			[ThreadStatic]
			internal static glGetTexLevelParameterfv pglGetTexLevelParameterfv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetTexLevelParameteriv(int target, int level, int pname, [Out] int* @params);
			[ThreadStatic]
			internal static glGetTexLevelParameteriv pglGetTexLevelParameteriv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetTexParameterfv(int target, int pname, [Out] float* @params);
			[ThreadStatic]
			internal static glGetTexParameterfv pglGetTexParameterfv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetTexParameterIiv(int target, int pname, [Out] int* @params);
			[ThreadStatic]
			internal static glGetTexParameterIiv pglGetTexParameterIiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetTexParameterIuiv(int target, int pname, [Out] UInt32* @params);
			[ThreadStatic]
			internal static glGetTexParameterIuiv pglGetTexParameterIuiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetTexParameteriv(int target, int pname, [Out] int* @params);
			[ThreadStatic]
			internal static glGetTexParameteriv pglGetTexParameteriv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetTransformFeedbackVarying(UInt32 program, UInt32 index, Int32 bufSize, [Out] Int32* length, [Out] Int32* size, [Out] int* type, [Out] StringBuilder name);
			[ThreadStatic]
			internal static glGetTransformFeedbackVarying pglGetTransformFeedbackVarying = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate UInt32 glGetUniformBlockIndex(UInt32 program, string uniformBlockName);
			[ThreadStatic]
			internal static glGetUniformBlockIndex pglGetUniformBlockIndex = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetUniformdv(UInt32 program, int location, [Out] double* @params);
			[ThreadStatic]
			internal static glGetUniformdv pglGetUniformdv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetUniformfv(UInt32 program, int location, [Out] float* @params);
			[ThreadStatic]
			internal static glGetUniformfv pglGetUniformfv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetUniformIndices(UInt32 program, Int32 uniformCount, string[] uniformNames, [Out] UInt32* uniformIndices);
			[ThreadStatic]
			internal static glGetUniformIndices pglGetUniformIndices = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetUniformiv(UInt32 program, int location, [Out] int* @params);
			[ThreadStatic]
			internal static glGetUniformiv pglGetUniformiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate int glGetUniformLocation(UInt32 program, string name);
			[ThreadStatic]
			internal static glGetUniformLocation pglGetUniformLocation = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetUniformSubroutineuiv(int shadertype, int location, [Out] UInt32* @params);
			[ThreadStatic]
			internal static glGetUniformSubroutineuiv pglGetUniformSubroutineuiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetUniformuiv(UInt32 program, int location, [Out] UInt32* @params);
			[ThreadStatic]
			internal static glGetUniformuiv pglGetUniformuiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetVertexAttribdv(UInt32 index, int pname, [Out] double* @params);
			[ThreadStatic]
			internal static glGetVertexAttribdv pglGetVertexAttribdv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetVertexAttribfv(UInt32 index, int pname, [Out] float* @params);
			[ThreadStatic]
			internal static glGetVertexAttribfv pglGetVertexAttribfv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetVertexAttribIiv(UInt32 index, int pname, [Out] int* @params);
			[ThreadStatic]
			internal static glGetVertexAttribIiv pglGetVertexAttribIiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetVertexAttribIuiv(UInt32 index, int pname, [Out] UInt32* @params);
			[ThreadStatic]
			internal static glGetVertexAttribIuiv pglGetVertexAttribIuiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetVertexAttribiv(UInt32 index, int pname, [Out] int* @params);
			[ThreadStatic]
			internal static glGetVertexAttribiv pglGetVertexAttribiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetVertexAttribLdv(UInt32 index, int pname, [Out] double* @params);
			[ThreadStatic]
			internal static glGetVertexAttribLdv pglGetVertexAttribLdv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetVertexAttribPointerv(UInt32 index, int pname, [Out] IntPtr* pointer);
			[ThreadStatic]
			internal static glGetVertexAttribPointerv pglGetVertexAttribPointerv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glHint(int target, int mode);
			[ThreadStatic]
			internal static glHint pglHint = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glHistogram(int target, Int32 width, int internalformat, bool sink);
			[ThreadStatic]
			internal static glHistogram pglHistogram = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glIndexd(double c);
			[ThreadStatic]
			internal static glIndexd pglIndexd = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glIndexdv(double* c);
			[ThreadStatic]
			internal static glIndexdv pglIndexdv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glIndexf(float c);
			[ThreadStatic]
			internal static glIndexf pglIndexf = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glIndexfv(float* c);
			[ThreadStatic]
			internal static glIndexfv pglIndexfv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glIndexi(int c);
			[ThreadStatic]
			internal static glIndexi pglIndexi = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glIndexiv(int* c);
			[ThreadStatic]
			internal static glIndexiv pglIndexiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glIndexMask(UInt32 mask);
			[ThreadStatic]
			internal static glIndexMask pglIndexMask = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glIndexPointer(int type, Int32 stride, IntPtr pointer);
			[ThreadStatic]
			internal static glIndexPointer pglIndexPointer = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glIndexs(Int16 c);
			[ThreadStatic]
			internal static glIndexs pglIndexs = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glIndexsv(Int16* c);
			[ThreadStatic]
			internal static glIndexsv pglIndexsv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glIndexub(byte c);
			[ThreadStatic]
			internal static glIndexub pglIndexub = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glIndexubv(byte* c);
			[ThreadStatic]
			internal static glIndexubv pglIndexubv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glInitNames();
			[ThreadStatic]
			internal static glInitNames pglInitNames = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glInterleavedArrays(int format, Int32 stride, IntPtr pointer);
			[ThreadStatic]
			internal static glInterleavedArrays pglInterleavedArrays = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate bool glIsBuffer(UInt32 buffer);
			[ThreadStatic]
			internal static glIsBuffer pglIsBuffer = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate bool glIsEnabled(int cap);
			[ThreadStatic]
			internal static glIsEnabled pglIsEnabled = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate bool glIsEnabledi(int target, UInt32 index);
			[ThreadStatic]
			internal static glIsEnabledi pglIsEnabledi = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate bool glIsFramebuffer(UInt32 framebuffer);
			[ThreadStatic]
			internal static glIsFramebuffer pglIsFramebuffer = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate bool glIsList(UInt32 list);
			[ThreadStatic]
			internal static glIsList pglIsList = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate bool glIsProgram(UInt32 program);
			[ThreadStatic]
			internal static glIsProgram pglIsProgram = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate bool glIsProgramPipeline(UInt32 pipeline);
			[ThreadStatic]
			internal static glIsProgramPipeline pglIsProgramPipeline = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate bool glIsQuery(UInt32 id);
			[ThreadStatic]
			internal static glIsQuery pglIsQuery = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate bool glIsRenderbuffer(UInt32 renderbuffer);
			[ThreadStatic]
			internal static glIsRenderbuffer pglIsRenderbuffer = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate bool glIsSampler(UInt32 sampler);
			[ThreadStatic]
			internal static glIsSampler pglIsSampler = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate bool glIsShader(UInt32 shader);
			[ThreadStatic]
			internal static glIsShader pglIsShader = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate bool glIsSync(int sync);
			[ThreadStatic]
			internal static glIsSync pglIsSync = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate bool glIsTexture(UInt32 texture);
			[ThreadStatic]
			internal static glIsTexture pglIsTexture = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate bool glIsTransformFeedback(UInt32 id);
			[ThreadStatic]
			internal static glIsTransformFeedback pglIsTransformFeedback = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate bool glIsVertexArray(UInt32 array);
			[ThreadStatic]
			internal static glIsVertexArray pglIsVertexArray = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glLightf(int light, int pname, float param);
			[ThreadStatic]
			internal static glLightf pglLightf = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glLightfv(int light, int pname, float* @params);
			[ThreadStatic]
			internal static glLightfv pglLightfv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glLighti(int light, int pname, int param);
			[ThreadStatic]
			internal static glLighti pglLighti = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glLightiv(int light, int pname, int* @params);
			[ThreadStatic]
			internal static glLightiv pglLightiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glLightModelf(int pname, float param);
			[ThreadStatic]
			internal static glLightModelf pglLightModelf = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glLightModelfv(int pname, float* @params);
			[ThreadStatic]
			internal static glLightModelfv pglLightModelfv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glLightModeli(int pname, int param);
			[ThreadStatic]
			internal static glLightModeli pglLightModeli = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glLightModeliv(int pname, int* @params);
			[ThreadStatic]
			internal static glLightModeliv pglLightModeliv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glLineStipple(int factor, UInt16 pattern);
			[ThreadStatic]
			internal static glLineStipple pglLineStipple = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glLineWidth(float width);
			[ThreadStatic]
			internal static glLineWidth pglLineWidth = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glLinkProgram(UInt32 program);
			[ThreadStatic]
			internal static glLinkProgram pglLinkProgram = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glListBase(UInt32 @base);
			[ThreadStatic]
			internal static glListBase pglListBase = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glLoadIdentity();
			[ThreadStatic]
			internal static glLoadIdentity pglLoadIdentity = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glLoadMatrixd(double* m);
			[ThreadStatic]
			internal static glLoadMatrixd pglLoadMatrixd = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glLoadMatrixf(float* m);
			[ThreadStatic]
			internal static glLoadMatrixf pglLoadMatrixf = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glLoadName(UInt32 name);
			[ThreadStatic]
			internal static glLoadName pglLoadName = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glLoadTransposeMatrixd(double* m);
			[ThreadStatic]
			internal static glLoadTransposeMatrixd pglLoadTransposeMatrixd = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glLoadTransposeMatrixf(float* m);
			[ThreadStatic]
			internal static glLoadTransposeMatrixf pglLoadTransposeMatrixf = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glLogicOp(int opcode);
			[ThreadStatic]
			internal static glLogicOp pglLogicOp = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMap1d(int target, double u1, double u2, int stride, int order, double* points);
			[ThreadStatic]
			internal static glMap1d pglMap1d = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMap1f(int target, float u1, float u2, int stride, int order, float* points);
			[ThreadStatic]
			internal static glMap1f pglMap1f = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMap2d(int target, double u1, double u2, int ustride, int uorder, double v1, double v2, int vstride, int vorder, double* points);
			[ThreadStatic]
			internal static glMap2d pglMap2d = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMap2f(int target, float u1, float u2, int ustride, int uorder, float v1, float v2, int vstride, int vorder, float* points);
			[ThreadStatic]
			internal static glMap2f pglMap2f = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate IntPtr glMapBuffer(int target, int access);
			[ThreadStatic]
			internal static glMapBuffer pglMapBuffer = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate IntPtr glMapBufferRange(int target, IntPtr offset, UInt32 length, uint access);
			[ThreadStatic]
			internal static glMapBufferRange pglMapBufferRange = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMapGrid1d(int un, double u1, double u2);
			[ThreadStatic]
			internal static glMapGrid1d pglMapGrid1d = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMapGrid1f(int un, float u1, float u2);
			[ThreadStatic]
			internal static glMapGrid1f pglMapGrid1f = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMapGrid2d(int un, double u1, double u2, int vn, double v1, double v2);
			[ThreadStatic]
			internal static glMapGrid2d pglMapGrid2d = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMapGrid2f(int un, float u1, float u2, int vn, float v1, float v2);
			[ThreadStatic]
			internal static glMapGrid2f pglMapGrid2f = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMaterialf(int face, int pname, float param);
			[ThreadStatic]
			internal static glMaterialf pglMaterialf = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMaterialfv(int face, int pname, float* @params);
			[ThreadStatic]
			internal static glMaterialfv pglMaterialfv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMateriali(int face, int pname, int param);
			[ThreadStatic]
			internal static glMateriali pglMateriali = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMaterialiv(int face, int pname, int* @params);
			[ThreadStatic]
			internal static glMaterialiv pglMaterialiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMatrixMode(int mode);
			[ThreadStatic]
			internal static glMatrixMode pglMatrixMode = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMemoryBarrier(uint barriers);
			[ThreadStatic]
			internal static glMemoryBarrier pglMemoryBarrier = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMinmax(int target, int internalformat, bool sink);
			[ThreadStatic]
			internal static glMinmax pglMinmax = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMinSampleShading(float value);
			[ThreadStatic]
			internal static glMinSampleShading pglMinSampleShading = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMultiDrawArrays(int mode, int* first, Int32* count, Int32 primcount);
			[ThreadStatic]
			internal static glMultiDrawArrays pglMultiDrawArrays = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMultiDrawElements(int mode, Int32* count, int type, IntPtr* indices, Int32 primcount);
			[ThreadStatic]
			internal static glMultiDrawElements pglMultiDrawElements = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMultiDrawElementsBaseVertex(int mode, Int32* count, int type, IntPtr* indices, Int32 primcount, int* basevertex);
			[ThreadStatic]
			internal static glMultiDrawElementsBaseVertex pglMultiDrawElementsBaseVertex = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMultiTexCoord1d(int target, double s);
			[ThreadStatic]
			internal static glMultiTexCoord1d pglMultiTexCoord1d = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMultiTexCoord1dv(int target, double* v);
			[ThreadStatic]
			internal static glMultiTexCoord1dv pglMultiTexCoord1dv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMultiTexCoord1f(int target, float s);
			[ThreadStatic]
			internal static glMultiTexCoord1f pglMultiTexCoord1f = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMultiTexCoord1fv(int target, float* v);
			[ThreadStatic]
			internal static glMultiTexCoord1fv pglMultiTexCoord1fv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMultiTexCoord1i(int target, int s);
			[ThreadStatic]
			internal static glMultiTexCoord1i pglMultiTexCoord1i = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMultiTexCoord1iv(int target, int* v);
			[ThreadStatic]
			internal static glMultiTexCoord1iv pglMultiTexCoord1iv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMultiTexCoord1s(int target, Int16 s);
			[ThreadStatic]
			internal static glMultiTexCoord1s pglMultiTexCoord1s = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMultiTexCoord1sv(int target, Int16* v);
			[ThreadStatic]
			internal static glMultiTexCoord1sv pglMultiTexCoord1sv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMultiTexCoord2d(int target, double s, double t);
			[ThreadStatic]
			internal static glMultiTexCoord2d pglMultiTexCoord2d = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMultiTexCoord2dv(int target, double* v);
			[ThreadStatic]
			internal static glMultiTexCoord2dv pglMultiTexCoord2dv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMultiTexCoord2f(int target, float s, float t);
			[ThreadStatic]
			internal static glMultiTexCoord2f pglMultiTexCoord2f = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMultiTexCoord2fv(int target, float* v);
			[ThreadStatic]
			internal static glMultiTexCoord2fv pglMultiTexCoord2fv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMultiTexCoord2i(int target, int s, int t);
			[ThreadStatic]
			internal static glMultiTexCoord2i pglMultiTexCoord2i = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMultiTexCoord2iv(int target, int* v);
			[ThreadStatic]
			internal static glMultiTexCoord2iv pglMultiTexCoord2iv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMultiTexCoord2s(int target, Int16 s, Int16 t);
			[ThreadStatic]
			internal static glMultiTexCoord2s pglMultiTexCoord2s = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMultiTexCoord2sv(int target, Int16* v);
			[ThreadStatic]
			internal static glMultiTexCoord2sv pglMultiTexCoord2sv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMultiTexCoord3d(int target, double s, double t, double r);
			[ThreadStatic]
			internal static glMultiTexCoord3d pglMultiTexCoord3d = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMultiTexCoord3dv(int target, double* v);
			[ThreadStatic]
			internal static glMultiTexCoord3dv pglMultiTexCoord3dv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMultiTexCoord3f(int target, float s, float t, float r);
			[ThreadStatic]
			internal static glMultiTexCoord3f pglMultiTexCoord3f = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMultiTexCoord3fv(int target, float* v);
			[ThreadStatic]
			internal static glMultiTexCoord3fv pglMultiTexCoord3fv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMultiTexCoord3i(int target, int s, int t, int r);
			[ThreadStatic]
			internal static glMultiTexCoord3i pglMultiTexCoord3i = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMultiTexCoord3iv(int target, int* v);
			[ThreadStatic]
			internal static glMultiTexCoord3iv pglMultiTexCoord3iv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMultiTexCoord3s(int target, Int16 s, Int16 t, Int16 r);
			[ThreadStatic]
			internal static glMultiTexCoord3s pglMultiTexCoord3s = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMultiTexCoord3sv(int target, Int16* v);
			[ThreadStatic]
			internal static glMultiTexCoord3sv pglMultiTexCoord3sv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMultiTexCoord4d(int target, double s, double t, double r, double q);
			[ThreadStatic]
			internal static glMultiTexCoord4d pglMultiTexCoord4d = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMultiTexCoord4dv(int target, double* v);
			[ThreadStatic]
			internal static glMultiTexCoord4dv pglMultiTexCoord4dv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMultiTexCoord4f(int target, float s, float t, float r, float q);
			[ThreadStatic]
			internal static glMultiTexCoord4f pglMultiTexCoord4f = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMultiTexCoord4fv(int target, float* v);
			[ThreadStatic]
			internal static glMultiTexCoord4fv pglMultiTexCoord4fv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMultiTexCoord4i(int target, int s, int t, int r, int q);
			[ThreadStatic]
			internal static glMultiTexCoord4i pglMultiTexCoord4i = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMultiTexCoord4iv(int target, int* v);
			[ThreadStatic]
			internal static glMultiTexCoord4iv pglMultiTexCoord4iv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMultiTexCoord4s(int target, Int16 s, Int16 t, Int16 r, Int16 q);
			[ThreadStatic]
			internal static glMultiTexCoord4s pglMultiTexCoord4s = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMultiTexCoord4sv(int target, Int16* v);
			[ThreadStatic]
			internal static glMultiTexCoord4sv pglMultiTexCoord4sv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMultiTexCoordP1ui(int texture, int type, UInt32 coords);
			[ThreadStatic]
			internal static glMultiTexCoordP1ui pglMultiTexCoordP1ui = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMultiTexCoordP1uiv(int texture, int type, UInt32* coords);
			[ThreadStatic]
			internal static glMultiTexCoordP1uiv pglMultiTexCoordP1uiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMultiTexCoordP2ui(int texture, int type, UInt32 coords);
			[ThreadStatic]
			internal static glMultiTexCoordP2ui pglMultiTexCoordP2ui = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMultiTexCoordP2uiv(int texture, int type, UInt32* coords);
			[ThreadStatic]
			internal static glMultiTexCoordP2uiv pglMultiTexCoordP2uiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMultiTexCoordP3ui(int texture, int type, UInt32 coords);
			[ThreadStatic]
			internal static glMultiTexCoordP3ui pglMultiTexCoordP3ui = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMultiTexCoordP3uiv(int texture, int type, UInt32* coords);
			[ThreadStatic]
			internal static glMultiTexCoordP3uiv pglMultiTexCoordP3uiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMultiTexCoordP4ui(int texture, int type, UInt32 coords);
			[ThreadStatic]
			internal static glMultiTexCoordP4ui pglMultiTexCoordP4ui = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMultiTexCoordP4uiv(int texture, int type, UInt32* coords);
			[ThreadStatic]
			internal static glMultiTexCoordP4uiv pglMultiTexCoordP4uiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMultMatrixd(double* m);
			[ThreadStatic]
			internal static glMultMatrixd pglMultMatrixd = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMultMatrixf(float* m);
			[ThreadStatic]
			internal static glMultMatrixf pglMultMatrixf = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMultTransposeMatrixd(double* m);
			[ThreadStatic]
			internal static glMultTransposeMatrixd pglMultTransposeMatrixd = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMultTransposeMatrixf(float* m);
			[ThreadStatic]
			internal static glMultTransposeMatrixf pglMultTransposeMatrixf = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glNewList(UInt32 list, int mode);
			[ThreadStatic]
			internal static glNewList pglNewList = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glNormal3b(sbyte nx, sbyte ny, sbyte nz);
			[ThreadStatic]
			internal static glNormal3b pglNormal3b = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glNormal3bv(sbyte* v);
			[ThreadStatic]
			internal static glNormal3bv pglNormal3bv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glNormal3d(double nx, double ny, double nz);
			[ThreadStatic]
			internal static glNormal3d pglNormal3d = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glNormal3dv(double* v);
			[ThreadStatic]
			internal static glNormal3dv pglNormal3dv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glNormal3f(float nx, float ny, float nz);
			[ThreadStatic]
			internal static glNormal3f pglNormal3f = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glNormal3fv(float* v);
			[ThreadStatic]
			internal static glNormal3fv pglNormal3fv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glNormal3i(int nx, int ny, int nz);
			[ThreadStatic]
			internal static glNormal3i pglNormal3i = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glNormal3iv(int* v);
			[ThreadStatic]
			internal static glNormal3iv pglNormal3iv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glNormal3s(Int16 nx, Int16 ny, Int16 nz);
			[ThreadStatic]
			internal static glNormal3s pglNormal3s = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glNormal3sv(Int16* v);
			[ThreadStatic]
			internal static glNormal3sv pglNormal3sv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glNormalP3ui(int type, UInt32 coords);
			[ThreadStatic]
			internal static glNormalP3ui pglNormalP3ui = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glNormalP3uiv(int type, UInt32* coords);
			[ThreadStatic]
			internal static glNormalP3uiv pglNormalP3uiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glNormalPointer(int type, Int32 stride, IntPtr pointer);
			[ThreadStatic]
			internal static glNormalPointer pglNormalPointer = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glOrtho(double left, double right, double bottom, double top, double zNear, double zFar);
			[ThreadStatic]
			internal static glOrtho pglOrtho = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glPassThrough(float token);
			[ThreadStatic]
			internal static glPassThrough pglPassThrough = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glPatchParameterfv(int pname, float* values);
			[ThreadStatic]
			internal static glPatchParameterfv pglPatchParameterfv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glPatchParameteri(int pname, int value);
			[ThreadStatic]
			internal static glPatchParameteri pglPatchParameteri = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glPauseTransformFeedback();
			[ThreadStatic]
			internal static glPauseTransformFeedback pglPauseTransformFeedback = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glPixelMapfv(int map, int mapsize, float* values);
			[ThreadStatic]
			internal static glPixelMapfv pglPixelMapfv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glPixelMapuiv(int map, int mapsize, UInt32* values);
			[ThreadStatic]
			internal static glPixelMapuiv pglPixelMapuiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glPixelMapusv(int map, int mapsize, UInt16* values);
			[ThreadStatic]
			internal static glPixelMapusv pglPixelMapusv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glPixelStoref(int pname, float param);
			[ThreadStatic]
			internal static glPixelStoref pglPixelStoref = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glPixelStorei(int pname, int param);
			[ThreadStatic]
			internal static glPixelStorei pglPixelStorei = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glPixelTransferf(int pname, float param);
			[ThreadStatic]
			internal static glPixelTransferf pglPixelTransferf = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glPixelTransferi(int pname, int param);
			[ThreadStatic]
			internal static glPixelTransferi pglPixelTransferi = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glPixelZoom(float xfactor, float yfactor);
			[ThreadStatic]
			internal static glPixelZoom pglPixelZoom = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glPointParameterf(int pname, float param);
			[ThreadStatic]
			internal static glPointParameterf pglPointParameterf = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glPointParameterfv(int pname, float* @params);
			[ThreadStatic]
			internal static glPointParameterfv pglPointParameterfv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glPointParameteri(int pname, int param);
			[ThreadStatic]
			internal static glPointParameteri pglPointParameteri = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glPointParameteriv(int pname, int* @params);
			[ThreadStatic]
			internal static glPointParameteriv pglPointParameteriv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glPointSize(float size);
			[ThreadStatic]
			internal static glPointSize pglPointSize = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glPolygonMode(int face, int mode);
			[ThreadStatic]
			internal static glPolygonMode pglPolygonMode = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glPolygonOffset(float factor, float units);
			[ThreadStatic]
			internal static glPolygonOffset pglPolygonOffset = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glPolygonStipple(byte* mask);
			[ThreadStatic]
			internal static glPolygonStipple pglPolygonStipple = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glPopAttrib();
			[ThreadStatic]
			internal static glPopAttrib pglPopAttrib = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glPopClientAttrib();
			[ThreadStatic]
			internal static glPopClientAttrib pglPopClientAttrib = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glPopMatrix();
			[ThreadStatic]
			internal static glPopMatrix pglPopMatrix = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glPopName();
			[ThreadStatic]
			internal static glPopName pglPopName = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glPrimitiveRestartIndex(UInt32 index);
			[ThreadStatic]
			internal static glPrimitiveRestartIndex pglPrimitiveRestartIndex = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glPrioritizeTextures(Int32 n, UInt32* textures, float* priorities);
			[ThreadStatic]
			internal static glPrioritizeTextures pglPrioritizeTextures = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glProgramBinary(UInt32 program, int binaryFormat, IntPtr binary, Int32 length);
			[ThreadStatic]
			internal static glProgramBinary pglProgramBinary = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glProgramParameteri(UInt32 program, int pname, int value);
			[ThreadStatic]
			internal static glProgramParameteri pglProgramParameteri = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glProgramUniform1d(UInt32 program, int location, double v0);
			[ThreadStatic]
			internal static glProgramUniform1d pglProgramUniform1d = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramUniform1dv(UInt32 program, int location, Int32 count, double* value);
			[ThreadStatic]
			internal static glProgramUniform1dv pglProgramUniform1dv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glProgramUniform1f(UInt32 program, int location, float v0);
			[ThreadStatic]
			internal static glProgramUniform1f pglProgramUniform1f = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramUniform1fv(UInt32 program, int location, Int32 count, float* value);
			[ThreadStatic]
			internal static glProgramUniform1fv pglProgramUniform1fv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glProgramUniform1i(UInt32 program, int location, int v0);
			[ThreadStatic]
			internal static glProgramUniform1i pglProgramUniform1i = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramUniform1iv(UInt32 program, int location, Int32 count, int* value);
			[ThreadStatic]
			internal static glProgramUniform1iv pglProgramUniform1iv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glProgramUniform1ui(UInt32 program, int location, UInt32 v0);
			[ThreadStatic]
			internal static glProgramUniform1ui pglProgramUniform1ui = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramUniform1uiv(UInt32 program, int location, Int32 count, UInt32* value);
			[ThreadStatic]
			internal static glProgramUniform1uiv pglProgramUniform1uiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glProgramUniform2d(UInt32 program, int location, double v0, double v1);
			[ThreadStatic]
			internal static glProgramUniform2d pglProgramUniform2d = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramUniform2dv(UInt32 program, int location, Int32 count, double* value);
			[ThreadStatic]
			internal static glProgramUniform2dv pglProgramUniform2dv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glProgramUniform2f(UInt32 program, int location, float v0, float v1);
			[ThreadStatic]
			internal static glProgramUniform2f pglProgramUniform2f = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramUniform2fv(UInt32 program, int location, Int32 count, float* value);
			[ThreadStatic]
			internal static glProgramUniform2fv pglProgramUniform2fv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glProgramUniform2i(UInt32 program, int location, int v0, int v1);
			[ThreadStatic]
			internal static glProgramUniform2i pglProgramUniform2i = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramUniform2iv(UInt32 program, int location, Int32 count, int* value);
			[ThreadStatic]
			internal static glProgramUniform2iv pglProgramUniform2iv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glProgramUniform2ui(UInt32 program, int location, UInt32 v0, UInt32 v1);
			[ThreadStatic]
			internal static glProgramUniform2ui pglProgramUniform2ui = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramUniform2uiv(UInt32 program, int location, Int32 count, UInt32* value);
			[ThreadStatic]
			internal static glProgramUniform2uiv pglProgramUniform2uiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glProgramUniform3d(UInt32 program, int location, double v0, double v1, double v2);
			[ThreadStatic]
			internal static glProgramUniform3d pglProgramUniform3d = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramUniform3dv(UInt32 program, int location, Int32 count, double* value);
			[ThreadStatic]
			internal static glProgramUniform3dv pglProgramUniform3dv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glProgramUniform3f(UInt32 program, int location, float v0, float v1, float v2);
			[ThreadStatic]
			internal static glProgramUniform3f pglProgramUniform3f = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramUniform3fv(UInt32 program, int location, Int32 count, float* value);
			[ThreadStatic]
			internal static glProgramUniform3fv pglProgramUniform3fv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glProgramUniform3i(UInt32 program, int location, int v0, int v1, int v2);
			[ThreadStatic]
			internal static glProgramUniform3i pglProgramUniform3i = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramUniform3iv(UInt32 program, int location, Int32 count, int* value);
			[ThreadStatic]
			internal static glProgramUniform3iv pglProgramUniform3iv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glProgramUniform3ui(UInt32 program, int location, UInt32 v0, UInt32 v1, UInt32 v2);
			[ThreadStatic]
			internal static glProgramUniform3ui pglProgramUniform3ui = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramUniform3uiv(UInt32 program, int location, Int32 count, UInt32* value);
			[ThreadStatic]
			internal static glProgramUniform3uiv pglProgramUniform3uiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glProgramUniform4d(UInt32 program, int location, double v0, double v1, double v2, double v3);
			[ThreadStatic]
			internal static glProgramUniform4d pglProgramUniform4d = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramUniform4dv(UInt32 program, int location, Int32 count, double* value);
			[ThreadStatic]
			internal static glProgramUniform4dv pglProgramUniform4dv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glProgramUniform4f(UInt32 program, int location, float v0, float v1, float v2, float v3);
			[ThreadStatic]
			internal static glProgramUniform4f pglProgramUniform4f = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramUniform4fv(UInt32 program, int location, Int32 count, float* value);
			[ThreadStatic]
			internal static glProgramUniform4fv pglProgramUniform4fv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glProgramUniform4i(UInt32 program, int location, int v0, int v1, int v2, int v3);
			[ThreadStatic]
			internal static glProgramUniform4i pglProgramUniform4i = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramUniform4iv(UInt32 program, int location, Int32 count, int* value);
			[ThreadStatic]
			internal static glProgramUniform4iv pglProgramUniform4iv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glProgramUniform4ui(UInt32 program, int location, UInt32 v0, UInt32 v1, UInt32 v2, UInt32 v3);
			[ThreadStatic]
			internal static glProgramUniform4ui pglProgramUniform4ui = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramUniform4uiv(UInt32 program, int location, Int32 count, UInt32* value);
			[ThreadStatic]
			internal static glProgramUniform4uiv pglProgramUniform4uiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramUniformMatrix2dv(UInt32 program, int location, Int32 count, bool transpose, double* value);
			[ThreadStatic]
			internal static glProgramUniformMatrix2dv pglProgramUniformMatrix2dv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramUniformMatrix2fv(UInt32 program, int location, Int32 count, bool transpose, float* value);
			[ThreadStatic]
			internal static glProgramUniformMatrix2fv pglProgramUniformMatrix2fv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramUniformMatrix2x3dv(UInt32 program, int location, Int32 count, bool transpose, double* value);
			[ThreadStatic]
			internal static glProgramUniformMatrix2x3dv pglProgramUniformMatrix2x3dv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramUniformMatrix2x3fv(UInt32 program, int location, Int32 count, bool transpose, float* value);
			[ThreadStatic]
			internal static glProgramUniformMatrix2x3fv pglProgramUniformMatrix2x3fv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramUniformMatrix2x4dv(UInt32 program, int location, Int32 count, bool transpose, double* value);
			[ThreadStatic]
			internal static glProgramUniformMatrix2x4dv pglProgramUniformMatrix2x4dv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramUniformMatrix2x4fv(UInt32 program, int location, Int32 count, bool transpose, float* value);
			[ThreadStatic]
			internal static glProgramUniformMatrix2x4fv pglProgramUniformMatrix2x4fv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramUniformMatrix3dv(UInt32 program, int location, Int32 count, bool transpose, double* value);
			[ThreadStatic]
			internal static glProgramUniformMatrix3dv pglProgramUniformMatrix3dv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramUniformMatrix3fv(UInt32 program, int location, Int32 count, bool transpose, float* value);
			[ThreadStatic]
			internal static glProgramUniformMatrix3fv pglProgramUniformMatrix3fv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramUniformMatrix3x2dv(UInt32 program, int location, Int32 count, bool transpose, double* value);
			[ThreadStatic]
			internal static glProgramUniformMatrix3x2dv pglProgramUniformMatrix3x2dv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramUniformMatrix3x2fv(UInt32 program, int location, Int32 count, bool transpose, float* value);
			[ThreadStatic]
			internal static glProgramUniformMatrix3x2fv pglProgramUniformMatrix3x2fv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramUniformMatrix3x4dv(UInt32 program, int location, Int32 count, bool transpose, double* value);
			[ThreadStatic]
			internal static glProgramUniformMatrix3x4dv pglProgramUniformMatrix3x4dv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramUniformMatrix3x4fv(UInt32 program, int location, Int32 count, bool transpose, float* value);
			[ThreadStatic]
			internal static glProgramUniformMatrix3x4fv pglProgramUniformMatrix3x4fv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramUniformMatrix4dv(UInt32 program, int location, Int32 count, bool transpose, double* value);
			[ThreadStatic]
			internal static glProgramUniformMatrix4dv pglProgramUniformMatrix4dv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramUniformMatrix4fv(UInt32 program, int location, Int32 count, bool transpose, float* value);
			[ThreadStatic]
			internal static glProgramUniformMatrix4fv pglProgramUniformMatrix4fv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramUniformMatrix4x2dv(UInt32 program, int location, Int32 count, bool transpose, double* value);
			[ThreadStatic]
			internal static glProgramUniformMatrix4x2dv pglProgramUniformMatrix4x2dv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramUniformMatrix4x2fv(UInt32 program, int location, Int32 count, bool transpose, float* value);
			[ThreadStatic]
			internal static glProgramUniformMatrix4x2fv pglProgramUniformMatrix4x2fv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramUniformMatrix4x3dv(UInt32 program, int location, Int32 count, bool transpose, double* value);
			[ThreadStatic]
			internal static glProgramUniformMatrix4x3dv pglProgramUniformMatrix4x3dv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramUniformMatrix4x3fv(UInt32 program, int location, Int32 count, bool transpose, float* value);
			[ThreadStatic]
			internal static glProgramUniformMatrix4x3fv pglProgramUniformMatrix4x3fv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glProvokingVertex(int mode);
			[ThreadStatic]
			internal static glProvokingVertex pglProvokingVertex = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glPushAttrib(uint mask);
			[ThreadStatic]
			internal static glPushAttrib pglPushAttrib = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glPushClientAttrib(uint mask);
			[ThreadStatic]
			internal static glPushClientAttrib pglPushClientAttrib = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glPushMatrix();
			[ThreadStatic]
			internal static glPushMatrix pglPushMatrix = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glPushName(UInt32 name);
			[ThreadStatic]
			internal static glPushName pglPushName = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glQueryCounter(UInt32 id, int target);
			[ThreadStatic]
			internal static glQueryCounter pglQueryCounter = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glRasterPos2d(double x, double y);
			[ThreadStatic]
			internal static glRasterPos2d pglRasterPos2d = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glRasterPos2dv(double* v);
			[ThreadStatic]
			internal static glRasterPos2dv pglRasterPos2dv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glRasterPos2f(float x, float y);
			[ThreadStatic]
			internal static glRasterPos2f pglRasterPos2f = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glRasterPos2fv(float* v);
			[ThreadStatic]
			internal static glRasterPos2fv pglRasterPos2fv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glRasterPos2i(int x, int y);
			[ThreadStatic]
			internal static glRasterPos2i pglRasterPos2i = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glRasterPos2iv(int* v);
			[ThreadStatic]
			internal static glRasterPos2iv pglRasterPos2iv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glRasterPos2s(Int16 x, Int16 y);
			[ThreadStatic]
			internal static glRasterPos2s pglRasterPos2s = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glRasterPos2sv(Int16* v);
			[ThreadStatic]
			internal static glRasterPos2sv pglRasterPos2sv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glRasterPos3d(double x, double y, double z);
			[ThreadStatic]
			internal static glRasterPos3d pglRasterPos3d = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glRasterPos3dv(double* v);
			[ThreadStatic]
			internal static glRasterPos3dv pglRasterPos3dv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glRasterPos3f(float x, float y, float z);
			[ThreadStatic]
			internal static glRasterPos3f pglRasterPos3f = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glRasterPos3fv(float* v);
			[ThreadStatic]
			internal static glRasterPos3fv pglRasterPos3fv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glRasterPos3i(int x, int y, int z);
			[ThreadStatic]
			internal static glRasterPos3i pglRasterPos3i = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glRasterPos3iv(int* v);
			[ThreadStatic]
			internal static glRasterPos3iv pglRasterPos3iv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glRasterPos3s(Int16 x, Int16 y, Int16 z);
			[ThreadStatic]
			internal static glRasterPos3s pglRasterPos3s = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glRasterPos3sv(Int16* v);
			[ThreadStatic]
			internal static glRasterPos3sv pglRasterPos3sv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glRasterPos4d(double x, double y, double z, double w);
			[ThreadStatic]
			internal static glRasterPos4d pglRasterPos4d = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glRasterPos4dv(double* v);
			[ThreadStatic]
			internal static glRasterPos4dv pglRasterPos4dv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glRasterPos4f(float x, float y, float z, float w);
			[ThreadStatic]
			internal static glRasterPos4f pglRasterPos4f = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glRasterPos4fv(float* v);
			[ThreadStatic]
			internal static glRasterPos4fv pglRasterPos4fv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glRasterPos4i(int x, int y, int z, int w);
			[ThreadStatic]
			internal static glRasterPos4i pglRasterPos4i = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glRasterPos4iv(int* v);
			[ThreadStatic]
			internal static glRasterPos4iv pglRasterPos4iv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glRasterPos4s(Int16 x, Int16 y, Int16 z, Int16 w);
			[ThreadStatic]
			internal static glRasterPos4s pglRasterPos4s = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glRasterPos4sv(Int16* v);
			[ThreadStatic]
			internal static glRasterPos4sv pglRasterPos4sv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glReadBuffer(int mode);
			[ThreadStatic]
			internal static glReadBuffer pglReadBuffer = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glReadPixels(int x, int y, Int32 width, Int32 height, int format, int type, [Out] IntPtr pixels);
			[ThreadStatic]
			internal static glReadPixels pglReadPixels = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glRectd(double x1, double y1, double x2, double y2);
			[ThreadStatic]
			internal static glRectd pglRectd = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glRectdv(double* v1, double* v2);
			[ThreadStatic]
			internal static glRectdv pglRectdv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glRectf(float x1, float y1, float x2, float y2);
			[ThreadStatic]
			internal static glRectf pglRectf = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glRectfv(float* v1, float* v2);
			[ThreadStatic]
			internal static glRectfv pglRectfv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glRecti(int x1, int y1, int x2, int y2);
			[ThreadStatic]
			internal static glRecti pglRecti = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glRectiv(int* v1, int* v2);
			[ThreadStatic]
			internal static glRectiv pglRectiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glRects(Int16 x1, Int16 y1, Int16 x2, Int16 y2);
			[ThreadStatic]
			internal static glRects pglRects = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glRectsv(Int16* v1, Int16* v2);
			[ThreadStatic]
			internal static glRectsv pglRectsv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glReleaseShaderCompiler();
			[ThreadStatic]
			internal static glReleaseShaderCompiler pglReleaseShaderCompiler = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glRenderbufferStorage(int target, int internalformat, Int32 width, Int32 height);
			[ThreadStatic]
			internal static glRenderbufferStorage pglRenderbufferStorage = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glRenderbufferStorageMultisample(int target, Int32 samples, int internalformat, Int32 width, Int32 height);
			[ThreadStatic]
			internal static glRenderbufferStorageMultisample pglRenderbufferStorageMultisample = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate int glRenderMode(int mode);
			[ThreadStatic]
			internal static glRenderMode pglRenderMode = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glResetHistogram(int target);
			[ThreadStatic]
			internal static glResetHistogram pglResetHistogram = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glResetMinmax(int target);
			[ThreadStatic]
			internal static glResetMinmax pglResetMinmax = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glResumeTransformFeedback();
			[ThreadStatic]
			internal static glResumeTransformFeedback pglResumeTransformFeedback = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glRotated(double angle, double x, double y, double z);
			[ThreadStatic]
			internal static glRotated pglRotated = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glRotatef(float angle, float x, float y, float z);
			[ThreadStatic]
			internal static glRotatef pglRotatef = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glSampleCoverage(float value, bool invert);
			[ThreadStatic]
			internal static glSampleCoverage pglSampleCoverage = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glSampleMaski(UInt32 index, uint mask);
			[ThreadStatic]
			internal static glSampleMaski pglSampleMaski = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glSamplerParameterf(UInt32 sampler, int pname, float param);
			[ThreadStatic]
			internal static glSamplerParameterf pglSamplerParameterf = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glSamplerParameterfv(UInt32 sampler, int pname, float* param);
			[ThreadStatic]
			internal static glSamplerParameterfv pglSamplerParameterfv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glSamplerParameteri(UInt32 sampler, int pname, int param);
			[ThreadStatic]
			internal static glSamplerParameteri pglSamplerParameteri = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glSamplerParameterIiv(UInt32 sampler, int pname, int* param);
			[ThreadStatic]
			internal static glSamplerParameterIiv pglSamplerParameterIiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glSamplerParameterIuiv(UInt32 sampler, int pname, UInt32* param);
			[ThreadStatic]
			internal static glSamplerParameterIuiv pglSamplerParameterIuiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glSamplerParameteriv(UInt32 sampler, int pname, int* param);
			[ThreadStatic]
			internal static glSamplerParameteriv pglSamplerParameteriv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glScaled(double x, double y, double z);
			[ThreadStatic]
			internal static glScaled pglScaled = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glScalef(float x, float y, float z);
			[ThreadStatic]
			internal static glScalef pglScalef = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glScissor(int x, int y, Int32 width, Int32 height);
			[ThreadStatic]
			internal static glScissor pglScissor = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glScissorArrayv(UInt32 first, Int32 count, int* v);
			[ThreadStatic]
			internal static glScissorArrayv pglScissorArrayv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glScissorIndexed(UInt32 index, int left, int bottom, Int32 width, Int32 height);
			[ThreadStatic]
			internal static glScissorIndexed pglScissorIndexed = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glScissorIndexedv(UInt32 index, int* v);
			[ThreadStatic]
			internal static glScissorIndexedv pglScissorIndexedv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glSecondaryColor3b(sbyte red, sbyte green, sbyte blue);
			[ThreadStatic]
			internal static glSecondaryColor3b pglSecondaryColor3b = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glSecondaryColor3bv(sbyte* v);
			[ThreadStatic]
			internal static glSecondaryColor3bv pglSecondaryColor3bv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glSecondaryColor3d(double red, double green, double blue);
			[ThreadStatic]
			internal static glSecondaryColor3d pglSecondaryColor3d = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glSecondaryColor3dv(double* v);
			[ThreadStatic]
			internal static glSecondaryColor3dv pglSecondaryColor3dv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glSecondaryColor3f(float red, float green, float blue);
			[ThreadStatic]
			internal static glSecondaryColor3f pglSecondaryColor3f = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glSecondaryColor3fv(float* v);
			[ThreadStatic]
			internal static glSecondaryColor3fv pglSecondaryColor3fv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glSecondaryColor3i(int red, int green, int blue);
			[ThreadStatic]
			internal static glSecondaryColor3i pglSecondaryColor3i = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glSecondaryColor3iv(int* v);
			[ThreadStatic]
			internal static glSecondaryColor3iv pglSecondaryColor3iv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glSecondaryColor3s(Int16 red, Int16 green, Int16 blue);
			[ThreadStatic]
			internal static glSecondaryColor3s pglSecondaryColor3s = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glSecondaryColor3sv(Int16* v);
			[ThreadStatic]
			internal static glSecondaryColor3sv pglSecondaryColor3sv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glSecondaryColor3ub(byte red, byte green, byte blue);
			[ThreadStatic]
			internal static glSecondaryColor3ub pglSecondaryColor3ub = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glSecondaryColor3ubv(byte* v);
			[ThreadStatic]
			internal static glSecondaryColor3ubv pglSecondaryColor3ubv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glSecondaryColor3ui(UInt32 red, UInt32 green, UInt32 blue);
			[ThreadStatic]
			internal static glSecondaryColor3ui pglSecondaryColor3ui = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glSecondaryColor3uiv(UInt32* v);
			[ThreadStatic]
			internal static glSecondaryColor3uiv pglSecondaryColor3uiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glSecondaryColor3us(UInt16 red, UInt16 green, UInt16 blue);
			[ThreadStatic]
			internal static glSecondaryColor3us pglSecondaryColor3us = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glSecondaryColor3usv(UInt16* v);
			[ThreadStatic]
			internal static glSecondaryColor3usv pglSecondaryColor3usv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glSecondaryColorP3ui(int type, UInt32 color);
			[ThreadStatic]
			internal static glSecondaryColorP3ui pglSecondaryColorP3ui = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glSecondaryColorP3uiv(int type, UInt32* color);
			[ThreadStatic]
			internal static glSecondaryColorP3uiv pglSecondaryColorP3uiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glSecondaryColorPointer(int size, int type, Int32 stride, IntPtr pointer);
			[ThreadStatic]
			internal static glSecondaryColorPointer pglSecondaryColorPointer = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glSelectBuffer(Int32 size, [Out] UInt32* buffer);
			[ThreadStatic]
			internal static glSelectBuffer pglSelectBuffer = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glSeparableFilter2D(int target, int internalformat, Int32 width, Int32 height, int format, int type, IntPtr row, IntPtr column);
			[ThreadStatic]
			internal static glSeparableFilter2D pglSeparableFilter2D = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glShadeModel(int mode);
			[ThreadStatic]
			internal static glShadeModel pglShadeModel = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glShaderBinary(Int32 count, UInt32* shaders, int binaryformat, IntPtr binary, Int32 length);
			[ThreadStatic]
			internal static glShaderBinary pglShaderBinary = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glShaderSource(UInt32 shader, Int32 count, string[] @string, int* length);
			[ThreadStatic]
			internal static glShaderSource pglShaderSource = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glStencilFunc(int func, int @ref, UInt32 mask);
			[ThreadStatic]
			internal static glStencilFunc pglStencilFunc = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glStencilFuncSeparate(int face, int func, int @ref, UInt32 mask);
			[ThreadStatic]
			internal static glStencilFuncSeparate pglStencilFuncSeparate = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glStencilMask(UInt32 mask);
			[ThreadStatic]
			internal static glStencilMask pglStencilMask = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glStencilMaskSeparate(int face, UInt32 mask);
			[ThreadStatic]
			internal static glStencilMaskSeparate pglStencilMaskSeparate = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glStencilOp(int fail, int zfail, int zpass);
			[ThreadStatic]
			internal static glStencilOp pglStencilOp = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glStencilOpSeparate(int face, int sfail, int dpfail, int dppass);
			[ThreadStatic]
			internal static glStencilOpSeparate pglStencilOpSeparate = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTexBuffer(int target, int internalformat, UInt32 buffer);
			[ThreadStatic]
			internal static glTexBuffer pglTexBuffer = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTexCoord1d(double s);
			[ThreadStatic]
			internal static glTexCoord1d pglTexCoord1d = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glTexCoord1dv(double* v);
			[ThreadStatic]
			internal static glTexCoord1dv pglTexCoord1dv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTexCoord1f(float s);
			[ThreadStatic]
			internal static glTexCoord1f pglTexCoord1f = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glTexCoord1fv(float* v);
			[ThreadStatic]
			internal static glTexCoord1fv pglTexCoord1fv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTexCoord1i(int s);
			[ThreadStatic]
			internal static glTexCoord1i pglTexCoord1i = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glTexCoord1iv(int* v);
			[ThreadStatic]
			internal static glTexCoord1iv pglTexCoord1iv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTexCoord1s(Int16 s);
			[ThreadStatic]
			internal static glTexCoord1s pglTexCoord1s = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glTexCoord1sv(Int16* v);
			[ThreadStatic]
			internal static glTexCoord1sv pglTexCoord1sv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTexCoord2d(double s, double t);
			[ThreadStatic]
			internal static glTexCoord2d pglTexCoord2d = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glTexCoord2dv(double* v);
			[ThreadStatic]
			internal static glTexCoord2dv pglTexCoord2dv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTexCoord2f(float s, float t);
			[ThreadStatic]
			internal static glTexCoord2f pglTexCoord2f = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glTexCoord2fv(float* v);
			[ThreadStatic]
			internal static glTexCoord2fv pglTexCoord2fv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTexCoord2i(int s, int t);
			[ThreadStatic]
			internal static glTexCoord2i pglTexCoord2i = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glTexCoord2iv(int* v);
			[ThreadStatic]
			internal static glTexCoord2iv pglTexCoord2iv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTexCoord2s(Int16 s, Int16 t);
			[ThreadStatic]
			internal static glTexCoord2s pglTexCoord2s = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glTexCoord2sv(Int16* v);
			[ThreadStatic]
			internal static glTexCoord2sv pglTexCoord2sv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTexCoord3d(double s, double t, double r);
			[ThreadStatic]
			internal static glTexCoord3d pglTexCoord3d = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glTexCoord3dv(double* v);
			[ThreadStatic]
			internal static glTexCoord3dv pglTexCoord3dv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTexCoord3f(float s, float t, float r);
			[ThreadStatic]
			internal static glTexCoord3f pglTexCoord3f = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glTexCoord3fv(float* v);
			[ThreadStatic]
			internal static glTexCoord3fv pglTexCoord3fv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTexCoord3i(int s, int t, int r);
			[ThreadStatic]
			internal static glTexCoord3i pglTexCoord3i = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glTexCoord3iv(int* v);
			[ThreadStatic]
			internal static glTexCoord3iv pglTexCoord3iv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTexCoord3s(Int16 s, Int16 t, Int16 r);
			[ThreadStatic]
			internal static glTexCoord3s pglTexCoord3s = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glTexCoord3sv(Int16* v);
			[ThreadStatic]
			internal static glTexCoord3sv pglTexCoord3sv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTexCoord4d(double s, double t, double r, double q);
			[ThreadStatic]
			internal static glTexCoord4d pglTexCoord4d = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glTexCoord4dv(double* v);
			[ThreadStatic]
			internal static glTexCoord4dv pglTexCoord4dv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTexCoord4f(float s, float t, float r, float q);
			[ThreadStatic]
			internal static glTexCoord4f pglTexCoord4f = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glTexCoord4fv(float* v);
			[ThreadStatic]
			internal static glTexCoord4fv pglTexCoord4fv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTexCoord4i(int s, int t, int r, int q);
			[ThreadStatic]
			internal static glTexCoord4i pglTexCoord4i = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glTexCoord4iv(int* v);
			[ThreadStatic]
			internal static glTexCoord4iv pglTexCoord4iv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTexCoord4s(Int16 s, Int16 t, Int16 r, Int16 q);
			[ThreadStatic]
			internal static glTexCoord4s pglTexCoord4s = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glTexCoord4sv(Int16* v);
			[ThreadStatic]
			internal static glTexCoord4sv pglTexCoord4sv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTexCoordP1ui(int type, UInt32 coords);
			[ThreadStatic]
			internal static glTexCoordP1ui pglTexCoordP1ui = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glTexCoordP1uiv(int type, UInt32* coords);
			[ThreadStatic]
			internal static glTexCoordP1uiv pglTexCoordP1uiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTexCoordP2ui(int type, UInt32 coords);
			[ThreadStatic]
			internal static glTexCoordP2ui pglTexCoordP2ui = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glTexCoordP2uiv(int type, UInt32* coords);
			[ThreadStatic]
			internal static glTexCoordP2uiv pglTexCoordP2uiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTexCoordP3ui(int type, UInt32 coords);
			[ThreadStatic]
			internal static glTexCoordP3ui pglTexCoordP3ui = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glTexCoordP3uiv(int type, UInt32* coords);
			[ThreadStatic]
			internal static glTexCoordP3uiv pglTexCoordP3uiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTexCoordP4ui(int type, UInt32 coords);
			[ThreadStatic]
			internal static glTexCoordP4ui pglTexCoordP4ui = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glTexCoordP4uiv(int type, UInt32* coords);
			[ThreadStatic]
			internal static glTexCoordP4uiv pglTexCoordP4uiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTexCoordPointer(int size, int type, Int32 stride, IntPtr pointer);
			[ThreadStatic]
			internal static glTexCoordPointer pglTexCoordPointer = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTexEnvf(int target, int pname, float param);
			[ThreadStatic]
			internal static glTexEnvf pglTexEnvf = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glTexEnvfv(int target, int pname, float* @params);
			[ThreadStatic]
			internal static glTexEnvfv pglTexEnvfv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTexEnvi(int target, int pname, int param);
			[ThreadStatic]
			internal static glTexEnvi pglTexEnvi = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glTexEnviv(int target, int pname, int* @params);
			[ThreadStatic]
			internal static glTexEnviv pglTexEnviv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTexGend(int coord, int pname, double param);
			[ThreadStatic]
			internal static glTexGend pglTexGend = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glTexGendv(int coord, int pname, double* @params);
			[ThreadStatic]
			internal static glTexGendv pglTexGendv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTexGenf(int coord, int pname, float param);
			[ThreadStatic]
			internal static glTexGenf pglTexGenf = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glTexGenfv(int coord, int pname, float* @params);
			[ThreadStatic]
			internal static glTexGenfv pglTexGenfv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTexGeni(int coord, int pname, int param);
			[ThreadStatic]
			internal static glTexGeni pglTexGeni = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glTexGeniv(int coord, int pname, int* @params);
			[ThreadStatic]
			internal static glTexGeniv pglTexGeniv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTexImage1D(int target, int level, int internalformat, Int32 width, int border, int format, int type, IntPtr pixels);
			[ThreadStatic]
			internal static glTexImage1D pglTexImage1D = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTexImage2D(int target, int level, int internalformat, Int32 width, Int32 height, int border, int format, int type, IntPtr pixels);
			[ThreadStatic]
			internal static glTexImage2D pglTexImage2D = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTexImage2DMultisample(int target, Int32 samples, int internalformat, Int32 width, Int32 height, bool fixedsamplelocations);
			[ThreadStatic]
			internal static glTexImage2DMultisample pglTexImage2DMultisample = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTexImage3D(int target, int level, int internalformat, Int32 width, Int32 height, Int32 depth, int border, int format, int type, IntPtr pixels);
			[ThreadStatic]
			internal static glTexImage3D pglTexImage3D = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTexImage3DMultisample(int target, Int32 samples, int internalformat, Int32 width, Int32 height, Int32 depth, bool fixedsamplelocations);
			[ThreadStatic]
			internal static glTexImage3DMultisample pglTexImage3DMultisample = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTexParameterf(int target, int pname, float param);
			[ThreadStatic]
			internal static glTexParameterf pglTexParameterf = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glTexParameterfv(int target, int pname, float* @params);
			[ThreadStatic]
			internal static glTexParameterfv pglTexParameterfv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTexParameteri(int target, int pname, int param);
			[ThreadStatic]
			internal static glTexParameteri pglTexParameteri = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glTexParameterIiv(int target, int pname, int* @params);
			[ThreadStatic]
			internal static glTexParameterIiv pglTexParameterIiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glTexParameterIuiv(int target, int pname, UInt32* @params);
			[ThreadStatic]
			internal static glTexParameterIuiv pglTexParameterIuiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glTexParameteriv(int target, int pname, int* @params);
			[ThreadStatic]
			internal static glTexParameteriv pglTexParameteriv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTexStorage1D(int target, Int32 levels, int internalformat, Int32 width);
			[ThreadStatic]
			internal static glTexStorage1D pglTexStorage1D = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTexStorage2D(int target, Int32 levels, int internalformat, Int32 width, Int32 height);
			[ThreadStatic]
			internal static glTexStorage2D pglTexStorage2D = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTexStorage3D(int target, Int32 levels, int internalformat, Int32 width, Int32 height, Int32 depth);
			[ThreadStatic]
			internal static glTexStorage3D pglTexStorage3D = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTexSubImage1D(int target, int level, int xoffset, Int32 width, int format, int type, IntPtr pixels);
			[ThreadStatic]
			internal static glTexSubImage1D pglTexSubImage1D = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTexSubImage2D(int target, int level, int xoffset, int yoffset, Int32 width, Int32 height, int format, int type, IntPtr pixels);
			[ThreadStatic]
			internal static glTexSubImage2D pglTexSubImage2D = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTexSubImage3D(int target, int level, int xoffset, int yoffset, int zoffset, Int32 width, Int32 height, Int32 depth, int format, int type, IntPtr pixels);
			[ThreadStatic]
			internal static glTexSubImage3D pglTexSubImage3D = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTransformFeedbackVaryings(UInt32 program, Int32 count, string[] varyings, int bufferMode);
			[ThreadStatic]
			internal static glTransformFeedbackVaryings pglTransformFeedbackVaryings = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTranslated(double x, double y, double z);
			[ThreadStatic]
			internal static glTranslated pglTranslated = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTranslatef(float x, float y, float z);
			[ThreadStatic]
			internal static glTranslatef pglTranslatef = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glUniform1d(int location, double x);
			[ThreadStatic]
			internal static glUniform1d pglUniform1d = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glUniform1dv(int location, Int32 count, double* value);
			[ThreadStatic]
			internal static glUniform1dv pglUniform1dv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glUniform1f(int location, float v0);
			[ThreadStatic]
			internal static glUniform1f pglUniform1f = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glUniform1fv(int location, Int32 count, float* value);
			[ThreadStatic]
			internal static glUniform1fv pglUniform1fv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glUniform1i(int location, int v0);
			[ThreadStatic]
			internal static glUniform1i pglUniform1i = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glUniform1iv(int location, Int32 count, int* value);
			[ThreadStatic]
			internal static glUniform1iv pglUniform1iv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glUniform1ui(int location, UInt32 v0);
			[ThreadStatic]
			internal static glUniform1ui pglUniform1ui = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glUniform1uiv(int location, Int32 count, UInt32* value);
			[ThreadStatic]
			internal static glUniform1uiv pglUniform1uiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glUniform2d(int location, double x, double y);
			[ThreadStatic]
			internal static glUniform2d pglUniform2d = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glUniform2dv(int location, Int32 count, double* value);
			[ThreadStatic]
			internal static glUniform2dv pglUniform2dv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glUniform2f(int location, float v0, float v1);
			[ThreadStatic]
			internal static glUniform2f pglUniform2f = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glUniform2fv(int location, Int32 count, float* value);
			[ThreadStatic]
			internal static glUniform2fv pglUniform2fv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glUniform2i(int location, int v0, int v1);
			[ThreadStatic]
			internal static glUniform2i pglUniform2i = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glUniform2iv(int location, Int32 count, int* value);
			[ThreadStatic]
			internal static glUniform2iv pglUniform2iv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glUniform2ui(int location, UInt32 v0, UInt32 v1);
			[ThreadStatic]
			internal static glUniform2ui pglUniform2ui = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glUniform2uiv(int location, Int32 count, UInt32* value);
			[ThreadStatic]
			internal static glUniform2uiv pglUniform2uiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glUniform3d(int location, double x, double y, double z);
			[ThreadStatic]
			internal static glUniform3d pglUniform3d = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glUniform3dv(int location, Int32 count, double* value);
			[ThreadStatic]
			internal static glUniform3dv pglUniform3dv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glUniform3f(int location, float v0, float v1, float v2);
			[ThreadStatic]
			internal static glUniform3f pglUniform3f = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glUniform3fv(int location, Int32 count, float* value);
			[ThreadStatic]
			internal static glUniform3fv pglUniform3fv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glUniform3i(int location, int v0, int v1, int v2);
			[ThreadStatic]
			internal static glUniform3i pglUniform3i = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glUniform3iv(int location, Int32 count, int* value);
			[ThreadStatic]
			internal static glUniform3iv pglUniform3iv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glUniform3ui(int location, UInt32 v0, UInt32 v1, UInt32 v2);
			[ThreadStatic]
			internal static glUniform3ui pglUniform3ui = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glUniform3uiv(int location, Int32 count, UInt32* value);
			[ThreadStatic]
			internal static glUniform3uiv pglUniform3uiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glUniform4d(int location, double x, double y, double z, double w);
			[ThreadStatic]
			internal static glUniform4d pglUniform4d = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glUniform4dv(int location, Int32 count, double* value);
			[ThreadStatic]
			internal static glUniform4dv pglUniform4dv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glUniform4f(int location, float v0, float v1, float v2, float v3);
			[ThreadStatic]
			internal static glUniform4f pglUniform4f = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glUniform4fv(int location, Int32 count, float* value);
			[ThreadStatic]
			internal static glUniform4fv pglUniform4fv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glUniform4i(int location, int v0, int v1, int v2, int v3);
			[ThreadStatic]
			internal static glUniform4i pglUniform4i = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glUniform4iv(int location, Int32 count, int* value);
			[ThreadStatic]
			internal static glUniform4iv pglUniform4iv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glUniform4ui(int location, UInt32 v0, UInt32 v1, UInt32 v2, UInt32 v3);
			[ThreadStatic]
			internal static glUniform4ui pglUniform4ui = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glUniform4uiv(int location, Int32 count, UInt32* value);
			[ThreadStatic]
			internal static glUniform4uiv pglUniform4uiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glUniformBlockBinding(UInt32 program, UInt32 uniformBlockIndex, UInt32 uniformBlockBinding);
			[ThreadStatic]
			internal static glUniformBlockBinding pglUniformBlockBinding = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glUniformMatrix2dv(int location, Int32 count, bool transpose, double* value);
			[ThreadStatic]
			internal static glUniformMatrix2dv pglUniformMatrix2dv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glUniformMatrix2fv(int location, Int32 count, bool transpose, float* value);
			[ThreadStatic]
			internal static glUniformMatrix2fv pglUniformMatrix2fv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glUniformMatrix2x3dv(int location, Int32 count, bool transpose, double* value);
			[ThreadStatic]
			internal static glUniformMatrix2x3dv pglUniformMatrix2x3dv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glUniformMatrix2x3fv(int location, Int32 count, bool transpose, float* value);
			[ThreadStatic]
			internal static glUniformMatrix2x3fv pglUniformMatrix2x3fv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glUniformMatrix2x4dv(int location, Int32 count, bool transpose, double* value);
			[ThreadStatic]
			internal static glUniformMatrix2x4dv pglUniformMatrix2x4dv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glUniformMatrix2x4fv(int location, Int32 count, bool transpose, float* value);
			[ThreadStatic]
			internal static glUniformMatrix2x4fv pglUniformMatrix2x4fv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glUniformMatrix3dv(int location, Int32 count, bool transpose, double* value);
			[ThreadStatic]
			internal static glUniformMatrix3dv pglUniformMatrix3dv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glUniformMatrix3fv(int location, Int32 count, bool transpose, float* value);
			[ThreadStatic]
			internal static glUniformMatrix3fv pglUniformMatrix3fv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glUniformMatrix3x2dv(int location, Int32 count, bool transpose, double* value);
			[ThreadStatic]
			internal static glUniformMatrix3x2dv pglUniformMatrix3x2dv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glUniformMatrix3x2fv(int location, Int32 count, bool transpose, float* value);
			[ThreadStatic]
			internal static glUniformMatrix3x2fv pglUniformMatrix3x2fv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glUniformMatrix3x4dv(int location, Int32 count, bool transpose, double* value);
			[ThreadStatic]
			internal static glUniformMatrix3x4dv pglUniformMatrix3x4dv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glUniformMatrix3x4fv(int location, Int32 count, bool transpose, float* value);
			[ThreadStatic]
			internal static glUniformMatrix3x4fv pglUniformMatrix3x4fv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glUniformMatrix4dv(int location, Int32 count, bool transpose, double* value);
			[ThreadStatic]
			internal static glUniformMatrix4dv pglUniformMatrix4dv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glUniformMatrix4fv(int location, Int32 count, bool transpose, float* value);
			[ThreadStatic]
			internal static glUniformMatrix4fv pglUniformMatrix4fv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glUniformMatrix4x2dv(int location, Int32 count, bool transpose, double* value);
			[ThreadStatic]
			internal static glUniformMatrix4x2dv pglUniformMatrix4x2dv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glUniformMatrix4x2fv(int location, Int32 count, bool transpose, float* value);
			[ThreadStatic]
			internal static glUniformMatrix4x2fv pglUniformMatrix4x2fv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glUniformMatrix4x3dv(int location, Int32 count, bool transpose, double* value);
			[ThreadStatic]
			internal static glUniformMatrix4x3dv pglUniformMatrix4x3dv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glUniformMatrix4x3fv(int location, Int32 count, bool transpose, float* value);
			[ThreadStatic]
			internal static glUniformMatrix4x3fv pglUniformMatrix4x3fv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glUniformSubroutinesuiv(int shadertype, Int32 count, UInt32* indices);
			[ThreadStatic]
			internal static glUniformSubroutinesuiv pglUniformSubroutinesuiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate bool glUnmapBuffer(int target);
			[ThreadStatic]
			internal static glUnmapBuffer pglUnmapBuffer = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glUseProgram(UInt32 program);
			[ThreadStatic]
			internal static glUseProgram pglUseProgram = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glUseProgramStages(UInt32 pipeline, uint stages, UInt32 program);
			[ThreadStatic]
			internal static glUseProgramStages pglUseProgramStages = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glValidateProgram(UInt32 program);
			[ThreadStatic]
			internal static glValidateProgram pglValidateProgram = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glValidateProgramPipeline(UInt32 pipeline);
			[ThreadStatic]
			internal static glValidateProgramPipeline pglValidateProgramPipeline = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertex2d(double x, double y);
			[ThreadStatic]
			internal static glVertex2d pglVertex2d = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertex2dv(double* v);
			[ThreadStatic]
			internal static glVertex2dv pglVertex2dv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertex2f(float x, float y);
			[ThreadStatic]
			internal static glVertex2f pglVertex2f = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertex2fv(float* v);
			[ThreadStatic]
			internal static glVertex2fv pglVertex2fv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertex2i(int x, int y);
			[ThreadStatic]
			internal static glVertex2i pglVertex2i = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertex2iv(int* v);
			[ThreadStatic]
			internal static glVertex2iv pglVertex2iv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertex2s(Int16 x, Int16 y);
			[ThreadStatic]
			internal static glVertex2s pglVertex2s = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertex2sv(Int16* v);
			[ThreadStatic]
			internal static glVertex2sv pglVertex2sv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertex3d(double x, double y, double z);
			[ThreadStatic]
			internal static glVertex3d pglVertex3d = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertex3dv(double* v);
			[ThreadStatic]
			internal static glVertex3dv pglVertex3dv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertex3f(float x, float y, float z);
			[ThreadStatic]
			internal static glVertex3f pglVertex3f = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertex3fv(float* v);
			[ThreadStatic]
			internal static glVertex3fv pglVertex3fv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertex3i(int x, int y, int z);
			[ThreadStatic]
			internal static glVertex3i pglVertex3i = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertex3iv(int* v);
			[ThreadStatic]
			internal static glVertex3iv pglVertex3iv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertex3s(Int16 x, Int16 y, Int16 z);
			[ThreadStatic]
			internal static glVertex3s pglVertex3s = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertex3sv(Int16* v);
			[ThreadStatic]
			internal static glVertex3sv pglVertex3sv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertex4d(double x, double y, double z, double w);
			[ThreadStatic]
			internal static glVertex4d pglVertex4d = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertex4dv(double* v);
			[ThreadStatic]
			internal static glVertex4dv pglVertex4dv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertex4f(float x, float y, float z, float w);
			[ThreadStatic]
			internal static glVertex4f pglVertex4f = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertex4fv(float* v);
			[ThreadStatic]
			internal static glVertex4fv pglVertex4fv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertex4i(int x, int y, int z, int w);
			[ThreadStatic]
			internal static glVertex4i pglVertex4i = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertex4iv(int* v);
			[ThreadStatic]
			internal static glVertex4iv pglVertex4iv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertex4s(Int16 x, Int16 y, Int16 z, Int16 w);
			[ThreadStatic]
			internal static glVertex4s pglVertex4s = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertex4sv(Int16* v);
			[ThreadStatic]
			internal static glVertex4sv pglVertex4sv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertexAttrib1d(UInt32 index, double x);
			[ThreadStatic]
			internal static glVertexAttrib1d pglVertexAttrib1d = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttrib1dv(UInt32 index, double* v);
			[ThreadStatic]
			internal static glVertexAttrib1dv pglVertexAttrib1dv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertexAttrib1f(UInt32 index, float x);
			[ThreadStatic]
			internal static glVertexAttrib1f pglVertexAttrib1f = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttrib1fv(UInt32 index, float* v);
			[ThreadStatic]
			internal static glVertexAttrib1fv pglVertexAttrib1fv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertexAttrib1s(UInt32 index, Int16 x);
			[ThreadStatic]
			internal static glVertexAttrib1s pglVertexAttrib1s = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttrib1sv(UInt32 index, Int16* v);
			[ThreadStatic]
			internal static glVertexAttrib1sv pglVertexAttrib1sv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertexAttrib2d(UInt32 index, double x, double y);
			[ThreadStatic]
			internal static glVertexAttrib2d pglVertexAttrib2d = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttrib2dv(UInt32 index, double* v);
			[ThreadStatic]
			internal static glVertexAttrib2dv pglVertexAttrib2dv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertexAttrib2f(UInt32 index, float x, float y);
			[ThreadStatic]
			internal static glVertexAttrib2f pglVertexAttrib2f = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttrib2fv(UInt32 index, float* v);
			[ThreadStatic]
			internal static glVertexAttrib2fv pglVertexAttrib2fv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertexAttrib2s(UInt32 index, Int16 x, Int16 y);
			[ThreadStatic]
			internal static glVertexAttrib2s pglVertexAttrib2s = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttrib2sv(UInt32 index, Int16* v);
			[ThreadStatic]
			internal static glVertexAttrib2sv pglVertexAttrib2sv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertexAttrib3d(UInt32 index, double x, double y, double z);
			[ThreadStatic]
			internal static glVertexAttrib3d pglVertexAttrib3d = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttrib3dv(UInt32 index, double* v);
			[ThreadStatic]
			internal static glVertexAttrib3dv pglVertexAttrib3dv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertexAttrib3f(UInt32 index, float x, float y, float z);
			[ThreadStatic]
			internal static glVertexAttrib3f pglVertexAttrib3f = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttrib3fv(UInt32 index, float* v);
			[ThreadStatic]
			internal static glVertexAttrib3fv pglVertexAttrib3fv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertexAttrib3s(UInt32 index, Int16 x, Int16 y, Int16 z);
			[ThreadStatic]
			internal static glVertexAttrib3s pglVertexAttrib3s = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttrib3sv(UInt32 index, Int16* v);
			[ThreadStatic]
			internal static glVertexAttrib3sv pglVertexAttrib3sv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttrib4bv(UInt32 index, sbyte* v);
			[ThreadStatic]
			internal static glVertexAttrib4bv pglVertexAttrib4bv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertexAttrib4d(UInt32 index, double x, double y, double z, double w);
			[ThreadStatic]
			internal static glVertexAttrib4d pglVertexAttrib4d = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttrib4dv(UInt32 index, double* v);
			[ThreadStatic]
			internal static glVertexAttrib4dv pglVertexAttrib4dv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertexAttrib4f(UInt32 index, float x, float y, float z, float w);
			[ThreadStatic]
			internal static glVertexAttrib4f pglVertexAttrib4f = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttrib4fv(UInt32 index, float* v);
			[ThreadStatic]
			internal static glVertexAttrib4fv pglVertexAttrib4fv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttrib4iv(UInt32 index, int* v);
			[ThreadStatic]
			internal static glVertexAttrib4iv pglVertexAttrib4iv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttrib4Nbv(UInt32 index, sbyte* v);
			[ThreadStatic]
			internal static glVertexAttrib4Nbv pglVertexAttrib4Nbv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttrib4Niv(UInt32 index, int* v);
			[ThreadStatic]
			internal static glVertexAttrib4Niv pglVertexAttrib4Niv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttrib4Nsv(UInt32 index, Int16* v);
			[ThreadStatic]
			internal static glVertexAttrib4Nsv pglVertexAttrib4Nsv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertexAttrib4Nub(UInt32 index, byte x, byte y, byte z, byte w);
			[ThreadStatic]
			internal static glVertexAttrib4Nub pglVertexAttrib4Nub = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttrib4Nubv(UInt32 index, byte* v);
			[ThreadStatic]
			internal static glVertexAttrib4Nubv pglVertexAttrib4Nubv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttrib4Nuiv(UInt32 index, UInt32* v);
			[ThreadStatic]
			internal static glVertexAttrib4Nuiv pglVertexAttrib4Nuiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttrib4Nusv(UInt32 index, UInt16* v);
			[ThreadStatic]
			internal static glVertexAttrib4Nusv pglVertexAttrib4Nusv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertexAttrib4s(UInt32 index, Int16 x, Int16 y, Int16 z, Int16 w);
			[ThreadStatic]
			internal static glVertexAttrib4s pglVertexAttrib4s = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttrib4sv(UInt32 index, Int16* v);
			[ThreadStatic]
			internal static glVertexAttrib4sv pglVertexAttrib4sv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttrib4ubv(UInt32 index, byte* v);
			[ThreadStatic]
			internal static glVertexAttrib4ubv pglVertexAttrib4ubv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttrib4uiv(UInt32 index, UInt32* v);
			[ThreadStatic]
			internal static glVertexAttrib4uiv pglVertexAttrib4uiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttrib4usv(UInt32 index, UInt16* v);
			[ThreadStatic]
			internal static glVertexAttrib4usv pglVertexAttrib4usv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertexAttribDivisor(UInt32 index, UInt32 divisor);
			[ThreadStatic]
			internal static glVertexAttribDivisor pglVertexAttribDivisor = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertexAttribI1i(UInt32 index, int x);
			[ThreadStatic]
			internal static glVertexAttribI1i pglVertexAttribI1i = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttribI1iv(UInt32 index, int* v);
			[ThreadStatic]
			internal static glVertexAttribI1iv pglVertexAttribI1iv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertexAttribI1ui(UInt32 index, UInt32 x);
			[ThreadStatic]
			internal static glVertexAttribI1ui pglVertexAttribI1ui = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttribI1uiv(UInt32 index, UInt32* v);
			[ThreadStatic]
			internal static glVertexAttribI1uiv pglVertexAttribI1uiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertexAttribI2i(UInt32 index, int x, int y);
			[ThreadStatic]
			internal static glVertexAttribI2i pglVertexAttribI2i = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttribI2iv(UInt32 index, int* v);
			[ThreadStatic]
			internal static glVertexAttribI2iv pglVertexAttribI2iv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertexAttribI2ui(UInt32 index, UInt32 x, UInt32 y);
			[ThreadStatic]
			internal static glVertexAttribI2ui pglVertexAttribI2ui = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttribI2uiv(UInt32 index, UInt32* v);
			[ThreadStatic]
			internal static glVertexAttribI2uiv pglVertexAttribI2uiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertexAttribI3i(UInt32 index, int x, int y, int z);
			[ThreadStatic]
			internal static glVertexAttribI3i pglVertexAttribI3i = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttribI3iv(UInt32 index, int* v);
			[ThreadStatic]
			internal static glVertexAttribI3iv pglVertexAttribI3iv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertexAttribI3ui(UInt32 index, UInt32 x, UInt32 y, UInt32 z);
			[ThreadStatic]
			internal static glVertexAttribI3ui pglVertexAttribI3ui = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttribI3uiv(UInt32 index, UInt32* v);
			[ThreadStatic]
			internal static glVertexAttribI3uiv pglVertexAttribI3uiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttribI4bv(UInt32 index, sbyte* v);
			[ThreadStatic]
			internal static glVertexAttribI4bv pglVertexAttribI4bv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertexAttribI4i(UInt32 index, int x, int y, int z, int w);
			[ThreadStatic]
			internal static glVertexAttribI4i pglVertexAttribI4i = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttribI4iv(UInt32 index, int* v);
			[ThreadStatic]
			internal static glVertexAttribI4iv pglVertexAttribI4iv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttribI4sv(UInt32 index, Int16* v);
			[ThreadStatic]
			internal static glVertexAttribI4sv pglVertexAttribI4sv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttribI4ubv(UInt32 index, byte* v);
			[ThreadStatic]
			internal static glVertexAttribI4ubv pglVertexAttribI4ubv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertexAttribI4ui(UInt32 index, UInt32 x, UInt32 y, UInt32 z, UInt32 w);
			[ThreadStatic]
			internal static glVertexAttribI4ui pglVertexAttribI4ui = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttribI4uiv(UInt32 index, UInt32* v);
			[ThreadStatic]
			internal static glVertexAttribI4uiv pglVertexAttribI4uiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttribI4usv(UInt32 index, UInt16* v);
			[ThreadStatic]
			internal static glVertexAttribI4usv pglVertexAttribI4usv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertexAttribIPointer(UInt32 index, int size, int type, Int32 stride, IntPtr pointer);
			[ThreadStatic]
			internal static glVertexAttribIPointer pglVertexAttribIPointer = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertexAttribL1d(UInt32 index, double x);
			[ThreadStatic]
			internal static glVertexAttribL1d pglVertexAttribL1d = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttribL1dv(UInt32 index, double* v);
			[ThreadStatic]
			internal static glVertexAttribL1dv pglVertexAttribL1dv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertexAttribL2d(UInt32 index, double x, double y);
			[ThreadStatic]
			internal static glVertexAttribL2d pglVertexAttribL2d = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttribL2dv(UInt32 index, double* v);
			[ThreadStatic]
			internal static glVertexAttribL2dv pglVertexAttribL2dv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertexAttribL3d(UInt32 index, double x, double y, double z);
			[ThreadStatic]
			internal static glVertexAttribL3d pglVertexAttribL3d = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttribL3dv(UInt32 index, double* v);
			[ThreadStatic]
			internal static glVertexAttribL3dv pglVertexAttribL3dv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertexAttribL4d(UInt32 index, double x, double y, double z, double w);
			[ThreadStatic]
			internal static glVertexAttribL4d pglVertexAttribL4d = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttribL4dv(UInt32 index, double* v);
			[ThreadStatic]
			internal static glVertexAttribL4dv pglVertexAttribL4dv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertexAttribLPointer(UInt32 index, int size, int type, Int32 stride, IntPtr pointer);
			[ThreadStatic]
			internal static glVertexAttribLPointer pglVertexAttribLPointer = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertexAttribP1ui(UInt32 index, int type, bool normalized, UInt32 value);
			[ThreadStatic]
			internal static glVertexAttribP1ui pglVertexAttribP1ui = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttribP1uiv(UInt32 index, int type, bool normalized, UInt32* value);
			[ThreadStatic]
			internal static glVertexAttribP1uiv pglVertexAttribP1uiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertexAttribP2ui(UInt32 index, int type, bool normalized, UInt32 value);
			[ThreadStatic]
			internal static glVertexAttribP2ui pglVertexAttribP2ui = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttribP2uiv(UInt32 index, int type, bool normalized, UInt32* value);
			[ThreadStatic]
			internal static glVertexAttribP2uiv pglVertexAttribP2uiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertexAttribP3ui(UInt32 index, int type, bool normalized, UInt32 value);
			[ThreadStatic]
			internal static glVertexAttribP3ui pglVertexAttribP3ui = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttribP3uiv(UInt32 index, int type, bool normalized, UInt32* value);
			[ThreadStatic]
			internal static glVertexAttribP3uiv pglVertexAttribP3uiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertexAttribP4ui(UInt32 index, int type, bool normalized, UInt32 value);
			[ThreadStatic]
			internal static glVertexAttribP4ui pglVertexAttribP4ui = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttribP4uiv(UInt32 index, int type, bool normalized, UInt32* value);
			[ThreadStatic]
			internal static glVertexAttribP4uiv pglVertexAttribP4uiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertexAttribPointer(UInt32 index, int size, int type, bool normalized, Int32 stride, IntPtr pointer);
			[ThreadStatic]
			internal static glVertexAttribPointer pglVertexAttribPointer = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertexP2ui(int type, UInt32 value);
			[ThreadStatic]
			internal static glVertexP2ui pglVertexP2ui = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexP2uiv(int type, UInt32* value);
			[ThreadStatic]
			internal static glVertexP2uiv pglVertexP2uiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertexP3ui(int type, UInt32 value);
			[ThreadStatic]
			internal static glVertexP3ui pglVertexP3ui = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexP3uiv(int type, UInt32* value);
			[ThreadStatic]
			internal static glVertexP3uiv pglVertexP3uiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertexP4ui(int type, UInt32 value);
			[ThreadStatic]
			internal static glVertexP4ui pglVertexP4ui = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexP4uiv(int type, UInt32* value);
			[ThreadStatic]
			internal static glVertexP4uiv pglVertexP4uiv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertexPointer(int size, int type, Int32 stride, IntPtr pointer);
			[ThreadStatic]
			internal static glVertexPointer pglVertexPointer = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glViewport(int x, int y, Int32 width, Int32 height);
			[ThreadStatic]
			internal static glViewport pglViewport = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glViewportArrayv(UInt32 first, Int32 count, float* v);
			[ThreadStatic]
			internal static glViewportArrayv pglViewportArrayv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glViewportIndexedf(UInt32 index, float x, float y, float w, float h);
			[ThreadStatic]
			internal static glViewportIndexedf pglViewportIndexedf = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glViewportIndexedfv(UInt32 index, float* v);
			[ThreadStatic]
			internal static glViewportIndexedfv pglViewportIndexedfv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glWaitSync(int sync, uint flags, UInt64 timeout);
			[ThreadStatic]
			internal static glWaitSync pglWaitSync = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glWindowPos2d(double x, double y);
			[ThreadStatic]
			internal static glWindowPos2d pglWindowPos2d = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glWindowPos2dv(double* v);
			[ThreadStatic]
			internal static glWindowPos2dv pglWindowPos2dv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glWindowPos2f(float x, float y);
			[ThreadStatic]
			internal static glWindowPos2f pglWindowPos2f = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glWindowPos2fv(float* v);
			[ThreadStatic]
			internal static glWindowPos2fv pglWindowPos2fv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glWindowPos2i(int x, int y);
			[ThreadStatic]
			internal static glWindowPos2i pglWindowPos2i = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glWindowPos2iv(int* v);
			[ThreadStatic]
			internal static glWindowPos2iv pglWindowPos2iv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glWindowPos2s(Int16 x, Int16 y);
			[ThreadStatic]
			internal static glWindowPos2s pglWindowPos2s = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glWindowPos2sv(Int16* v);
			[ThreadStatic]
			internal static glWindowPos2sv pglWindowPos2sv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glWindowPos3d(double x, double y, double z);
			[ThreadStatic]
			internal static glWindowPos3d pglWindowPos3d = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glWindowPos3dv(double* v);
			[ThreadStatic]
			internal static glWindowPos3dv pglWindowPos3dv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glWindowPos3f(float x, float y, float z);
			[ThreadStatic]
			internal static glWindowPos3f pglWindowPos3f = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glWindowPos3fv(float* v);
			[ThreadStatic]
			internal static glWindowPos3fv pglWindowPos3fv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glWindowPos3i(int x, int y, int z);
			[ThreadStatic]
			internal static glWindowPos3i pglWindowPos3i = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glWindowPos3iv(int* v);
			[ThreadStatic]
			internal static glWindowPos3iv pglWindowPos3iv = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glWindowPos3s(Int16 x, Int16 y, Int16 z);
			[ThreadStatic]
			internal static glWindowPos3s pglWindowPos3s = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glWindowPos3sv(Int16* v);
			[ThreadStatic]
			internal static glWindowPos3sv pglWindowPos3sv = null;

		}

		internal static partial class Imports
		{
			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glAccum", ExactSpelling = true)]
			internal extern static void glAccum(int op, float value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glActiveShaderProgram", ExactSpelling = true)]
			internal extern static void glActiveShaderProgram(UInt32 pipeline, UInt32 program);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glActiveTexture", ExactSpelling = true)]
			internal extern static void glActiveTexture(int texture);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glAlphaFunc", ExactSpelling = true)]
			internal extern static void glAlphaFunc(int func, float @ref);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glAreTexturesResident", ExactSpelling = true)]
			internal extern static unsafe bool glAreTexturesResident(Int32 n, UInt32* textures, [Out]bool* residences);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glArrayElement", ExactSpelling = true)]
			internal extern static void glArrayElement(int i);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glAttachShader", ExactSpelling = true)]
			internal extern static void glAttachShader(UInt32 program, UInt32 shader);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBegin", ExactSpelling = true)]
			internal extern static void glBegin(int mode);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBeginConditionalRender", ExactSpelling = true)]
			internal extern static void glBeginConditionalRender(UInt32 id, int mode);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBeginQuery", ExactSpelling = true)]
			internal extern static void glBeginQuery(int target, UInt32 id);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBeginQueryIndexed", ExactSpelling = true)]
			internal extern static void glBeginQueryIndexed(int target, UInt32 index, UInt32 id);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBeginTransformFeedback", ExactSpelling = true)]
			internal extern static void glBeginTransformFeedback(int primitiveMode);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBindAttribLocation", ExactSpelling = true)]
			internal extern static void glBindAttribLocation(UInt32 program, UInt32 index, string name);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBindBuffer", ExactSpelling = true)]
			internal extern static void glBindBuffer(int target, UInt32 buffer);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBindBufferBase", ExactSpelling = true)]
			internal extern static void glBindBufferBase(int target, UInt32 index, UInt32 buffer);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBindBufferRange", ExactSpelling = true)]
			internal extern static void glBindBufferRange(int target, UInt32 index, UInt32 buffer, IntPtr offset, UInt32 size);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBindFragDataLocation", ExactSpelling = true)]
			internal extern static void glBindFragDataLocation(UInt32 program, UInt32 color, string name);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBindFragDataLocationIndexed", ExactSpelling = true)]
			internal extern static void glBindFragDataLocationIndexed(UInt32 program, UInt32 colorNumber, UInt32 index, string name);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBindFramebuffer", ExactSpelling = true)]
			internal extern static void glBindFramebuffer(int target, UInt32 framebuffer);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBindImageTexture", ExactSpelling = true)]
			internal extern static void glBindImageTexture(UInt32 unit, UInt32 texture, int level, bool layered, int layer, int access, int format);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBindProgramPipeline", ExactSpelling = true)]
			internal extern static void glBindProgramPipeline(UInt32 pipeline);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBindRenderbuffer", ExactSpelling = true)]
			internal extern static void glBindRenderbuffer(int target, UInt32 renderbuffer);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBindSampler", ExactSpelling = true)]
			internal extern static void glBindSampler(UInt32 unit, UInt32 sampler);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBindTexture", ExactSpelling = true)]
			internal extern static void glBindTexture(int target, UInt32 texture);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBindTransformFeedback", ExactSpelling = true)]
			internal extern static void glBindTransformFeedback(int target, UInt32 id);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBindVertexArray", ExactSpelling = true)]
			internal extern static void glBindVertexArray(UInt32 array);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBitmap", ExactSpelling = true)]
			internal extern static unsafe void glBitmap(Int32 width, Int32 height, float xorig, float yorig, float xmove, float ymove, byte* bitmap);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBlendColor", ExactSpelling = true)]
			internal extern static void glBlendColor(float red, float green, float blue, float alpha);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBlendEquation", ExactSpelling = true)]
			internal extern static void glBlendEquation(int mode);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBlendEquationi", ExactSpelling = true)]
			internal extern static void glBlendEquationi(UInt32 buf, int mode);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBlendEquationSeparate", ExactSpelling = true)]
			internal extern static void glBlendEquationSeparate(int modeRGB, int modeAlpha);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBlendEquationSeparatei", ExactSpelling = true)]
			internal extern static void glBlendEquationSeparatei(UInt32 buf, int modeRGB, int modeAlpha);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBlendFunc", ExactSpelling = true)]
			internal extern static void glBlendFunc(int sfactor, int dfactor);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBlendFunci", ExactSpelling = true)]
			internal extern static void glBlendFunci(UInt32 buf, int src, int dst);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBlendFuncSeparate", ExactSpelling = true)]
			internal extern static void glBlendFuncSeparate(int sfactorRGB, int dfactorRGB, int sfactorAlpha, int dfactorAlpha);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBlendFuncSeparatei", ExactSpelling = true)]
			internal extern static void glBlendFuncSeparatei(UInt32 buf, int srcRGB, int dstRGB, int srcAlpha, int dstAlpha);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBlitFramebuffer", ExactSpelling = true)]
			internal extern static void glBlitFramebuffer(int srcX0, int srcY0, int srcX1, int srcY1, int dstX0, int dstY0, int dstX1, int dstY1, uint mask, int filter);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBufferData", ExactSpelling = true)]
			internal extern static void glBufferData(int target, UInt32 size, IntPtr data, int usage);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBufferSubData", ExactSpelling = true)]
			internal extern static void glBufferSubData(int target, IntPtr offset, UInt32 size, IntPtr data);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glCallList", ExactSpelling = true)]
			internal extern static void glCallList(UInt32 list);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glCallLists", ExactSpelling = true)]
			internal extern static void glCallLists(Int32 n, int type, IntPtr lists);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glCheckFramebufferStatus", ExactSpelling = true)]
			internal extern static int glCheckFramebufferStatus(int target);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glClampColor", ExactSpelling = true)]
			internal extern static void glClampColor(int target, int clamp);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glClear", ExactSpelling = true)]
			internal extern static void glClear(uint mask);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glClearAccum", ExactSpelling = true)]
			internal extern static void glClearAccum(float red, float green, float blue, float alpha);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glClearBufferfi", ExactSpelling = true)]
			internal extern static void glClearBufferfi(int buffer, int drawbuffer, float depth, int stencil);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glClearBufferfv", ExactSpelling = true)]
			internal extern static unsafe void glClearBufferfv(int buffer, int drawbuffer, float* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glClearBufferiv", ExactSpelling = true)]
			internal extern static unsafe void glClearBufferiv(int buffer, int drawbuffer, int* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glClearBufferuiv", ExactSpelling = true)]
			internal extern static unsafe void glClearBufferuiv(int buffer, int drawbuffer, UInt32* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glClearColor", ExactSpelling = true)]
			internal extern static void glClearColor(float red, float green, float blue, float alpha);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glClearDepth", ExactSpelling = true)]
			internal extern static void glClearDepth(double depth);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glClearDepthf", ExactSpelling = true)]
			internal extern static void glClearDepthf(float d);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glClearIndex", ExactSpelling = true)]
			internal extern static void glClearIndex(float c);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glClearStencil", ExactSpelling = true)]
			internal extern static void glClearStencil(int s);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glClientActiveTexture", ExactSpelling = true)]
			internal extern static void glClientActiveTexture(int texture);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glClientWaitSync", ExactSpelling = true)]
			internal extern static int glClientWaitSync(int sync, uint flags, UInt64 timeout);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glClipPlane", ExactSpelling = true)]
			internal extern static unsafe void glClipPlane(int plane, double* equation);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glColor3b", ExactSpelling = true)]
			internal extern static void glColor3b(sbyte red, sbyte green, sbyte blue);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glColor3bv", ExactSpelling = true)]
			internal extern static unsafe void glColor3bv(sbyte* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glColor3d", ExactSpelling = true)]
			internal extern static void glColor3d(double red, double green, double blue);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glColor3dv", ExactSpelling = true)]
			internal extern static unsafe void glColor3dv(double* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glColor3f", ExactSpelling = true)]
			internal extern static void glColor3f(float red, float green, float blue);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glColor3fv", ExactSpelling = true)]
			internal extern static unsafe void glColor3fv(float* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glColor3i", ExactSpelling = true)]
			internal extern static void glColor3i(int red, int green, int blue);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glColor3iv", ExactSpelling = true)]
			internal extern static unsafe void glColor3iv(int* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glColor3s", ExactSpelling = true)]
			internal extern static void glColor3s(Int16 red, Int16 green, Int16 blue);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glColor3sv", ExactSpelling = true)]
			internal extern static unsafe void glColor3sv(Int16* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glColor3ub", ExactSpelling = true)]
			internal extern static void glColor3ub(byte red, byte green, byte blue);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glColor3ubv", ExactSpelling = true)]
			internal extern static unsafe void glColor3ubv(byte* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glColor3ui", ExactSpelling = true)]
			internal extern static void glColor3ui(UInt32 red, UInt32 green, UInt32 blue);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glColor3uiv", ExactSpelling = true)]
			internal extern static unsafe void glColor3uiv(UInt32* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glColor3us", ExactSpelling = true)]
			internal extern static void glColor3us(UInt16 red, UInt16 green, UInt16 blue);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glColor3usv", ExactSpelling = true)]
			internal extern static unsafe void glColor3usv(UInt16* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glColor4b", ExactSpelling = true)]
			internal extern static void glColor4b(sbyte red, sbyte green, sbyte blue, sbyte alpha);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glColor4bv", ExactSpelling = true)]
			internal extern static unsafe void glColor4bv(sbyte* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glColor4d", ExactSpelling = true)]
			internal extern static void glColor4d(double red, double green, double blue, double alpha);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glColor4dv", ExactSpelling = true)]
			internal extern static unsafe void glColor4dv(double* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glColor4f", ExactSpelling = true)]
			internal extern static void glColor4f(float red, float green, float blue, float alpha);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glColor4fv", ExactSpelling = true)]
			internal extern static unsafe void glColor4fv(float* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glColor4i", ExactSpelling = true)]
			internal extern static void glColor4i(int red, int green, int blue, int alpha);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glColor4iv", ExactSpelling = true)]
			internal extern static unsafe void glColor4iv(int* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glColor4s", ExactSpelling = true)]
			internal extern static void glColor4s(Int16 red, Int16 green, Int16 blue, Int16 alpha);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glColor4sv", ExactSpelling = true)]
			internal extern static unsafe void glColor4sv(Int16* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glColor4ub", ExactSpelling = true)]
			internal extern static void glColor4ub(byte red, byte green, byte blue, byte alpha);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glColor4ubv", ExactSpelling = true)]
			internal extern static unsafe void glColor4ubv(byte* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glColor4ui", ExactSpelling = true)]
			internal extern static void glColor4ui(UInt32 red, UInt32 green, UInt32 blue, UInt32 alpha);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glColor4uiv", ExactSpelling = true)]
			internal extern static unsafe void glColor4uiv(UInt32* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glColor4us", ExactSpelling = true)]
			internal extern static void glColor4us(UInt16 red, UInt16 green, UInt16 blue, UInt16 alpha);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glColor4usv", ExactSpelling = true)]
			internal extern static unsafe void glColor4usv(UInt16* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glColorMask", ExactSpelling = true)]
			internal extern static void glColorMask(bool red, bool green, bool blue, bool alpha);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glColorMaski", ExactSpelling = true)]
			internal extern static void glColorMaski(UInt32 index, bool r, bool g, bool b, bool a);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glColorMaterial", ExactSpelling = true)]
			internal extern static void glColorMaterial(int face, int mode);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glColorP3ui", ExactSpelling = true)]
			internal extern static void glColorP3ui(int type, UInt32 color);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glColorP3uiv", ExactSpelling = true)]
			internal extern static unsafe void glColorP3uiv(int type, UInt32* color);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glColorP4ui", ExactSpelling = true)]
			internal extern static void glColorP4ui(int type, UInt32 color);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glColorP4uiv", ExactSpelling = true)]
			internal extern static unsafe void glColorP4uiv(int type, UInt32* color);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glColorPointer", ExactSpelling = true)]
			internal extern static void glColorPointer(int size, int type, Int32 stride, IntPtr pointer);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glColorSubTable", ExactSpelling = true)]
			internal extern static void glColorSubTable(int target, Int32 start, Int32 count, int format, int type, IntPtr data);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glColorTable", ExactSpelling = true)]
			internal extern static void glColorTable(int target, int internalformat, Int32 width, int format, int type, IntPtr table);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glColorTableParameterfv", ExactSpelling = true)]
			internal extern static unsafe void glColorTableParameterfv(int target, int pname, float* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glColorTableParameteriv", ExactSpelling = true)]
			internal extern static unsafe void glColorTableParameteriv(int target, int pname, int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glCompileShader", ExactSpelling = true)]
			internal extern static void glCompileShader(UInt32 shader);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glCompressedTexImage1D", ExactSpelling = true)]
			internal extern static void glCompressedTexImage1D(int target, int level, int internalformat, Int32 width, int border, Int32 imageSize, IntPtr data);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glCompressedTexImage2D", ExactSpelling = true)]
			internal extern static void glCompressedTexImage2D(int target, int level, int internalformat, Int32 width, Int32 height, int border, Int32 imageSize, IntPtr data);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glCompressedTexImage3D", ExactSpelling = true)]
			internal extern static void glCompressedTexImage3D(int target, int level, int internalformat, Int32 width, Int32 height, Int32 depth, int border, Int32 imageSize, IntPtr data);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glCompressedTexSubImage1D", ExactSpelling = true)]
			internal extern static void glCompressedTexSubImage1D(int target, int level, int xoffset, Int32 width, int format, Int32 imageSize, IntPtr data);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glCompressedTexSubImage2D", ExactSpelling = true)]
			internal extern static void glCompressedTexSubImage2D(int target, int level, int xoffset, int yoffset, Int32 width, Int32 height, int format, Int32 imageSize, IntPtr data);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glCompressedTexSubImage3D", ExactSpelling = true)]
			internal extern static void glCompressedTexSubImage3D(int target, int level, int xoffset, int yoffset, int zoffset, Int32 width, Int32 height, Int32 depth, int format, Int32 imageSize, IntPtr data);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glConvolutionFilter1D", ExactSpelling = true)]
			internal extern static void glConvolutionFilter1D(int target, int internalformat, Int32 width, int format, int type, IntPtr image);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glConvolutionFilter2D", ExactSpelling = true)]
			internal extern static void glConvolutionFilter2D(int target, int internalformat, Int32 width, Int32 height, int format, int type, IntPtr image);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glConvolutionParameterf", ExactSpelling = true)]
			internal extern static void glConvolutionParameterf(int target, int pname, float @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glConvolutionParameterfv", ExactSpelling = true)]
			internal extern static unsafe void glConvolutionParameterfv(int target, int pname, float* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glConvolutionParameteri", ExactSpelling = true)]
			internal extern static void glConvolutionParameteri(int target, int pname, int @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glConvolutionParameteriv", ExactSpelling = true)]
			internal extern static unsafe void glConvolutionParameteriv(int target, int pname, int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glCopyBufferSubData", ExactSpelling = true)]
			internal extern static void glCopyBufferSubData(int readTarget, int writeTarget, IntPtr readOffset, IntPtr writeOffset, UInt32 size);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glCopyColorSubTable", ExactSpelling = true)]
			internal extern static void glCopyColorSubTable(int target, Int32 start, int x, int y, Int32 width);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glCopyColorTable", ExactSpelling = true)]
			internal extern static void glCopyColorTable(int target, int internalformat, int x, int y, Int32 width);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glCopyConvolutionFilter1D", ExactSpelling = true)]
			internal extern static void glCopyConvolutionFilter1D(int target, int internalformat, int x, int y, Int32 width);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glCopyConvolutionFilter2D", ExactSpelling = true)]
			internal extern static void glCopyConvolutionFilter2D(int target, int internalformat, int x, int y, Int32 width, Int32 height);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glCopyPixels", ExactSpelling = true)]
			internal extern static void glCopyPixels(int x, int y, Int32 width, Int32 height, int type);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glCopyTexImage1D", ExactSpelling = true)]
			internal extern static void glCopyTexImage1D(int target, int level, int internalformat, int x, int y, Int32 width, int border);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glCopyTexImage2D", ExactSpelling = true)]
			internal extern static void glCopyTexImage2D(int target, int level, int internalformat, int x, int y, Int32 width, Int32 height, int border);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glCopyTexSubImage1D", ExactSpelling = true)]
			internal extern static void glCopyTexSubImage1D(int target, int level, int xoffset, int x, int y, Int32 width);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glCopyTexSubImage2D", ExactSpelling = true)]
			internal extern static void glCopyTexSubImage2D(int target, int level, int xoffset, int yoffset, int x, int y, Int32 width, Int32 height);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glCopyTexSubImage3D", ExactSpelling = true)]
			internal extern static void glCopyTexSubImage3D(int target, int level, int xoffset, int yoffset, int zoffset, int x, int y, Int32 width, Int32 height);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glCreateProgram", ExactSpelling = true)]
			internal extern static UInt32 glCreateProgram();

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glCreateShader", ExactSpelling = true)]
			internal extern static UInt32 glCreateShader(int type);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glCreateShaderProgramv", ExactSpelling = true)]
			internal extern static UInt32 glCreateShaderProgramv(int type, Int32 count, string[] strings);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glCullFace", ExactSpelling = true)]
			internal extern static void glCullFace(int mode);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glDeleteBuffers", ExactSpelling = true)]
			internal extern static unsafe void glDeleteBuffers(Int32 n, UInt32* buffers);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glDeleteFramebuffers", ExactSpelling = true)]
			internal extern static unsafe void glDeleteFramebuffers(Int32 n, UInt32* framebuffers);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glDeleteLists", ExactSpelling = true)]
			internal extern static void glDeleteLists(UInt32 list, Int32 range);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glDeleteProgram", ExactSpelling = true)]
			internal extern static void glDeleteProgram(UInt32 program);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glDeleteProgramPipelines", ExactSpelling = true)]
			internal extern static unsafe void glDeleteProgramPipelines(Int32 n, UInt32* pipelines);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glDeleteQueries", ExactSpelling = true)]
			internal extern static unsafe void glDeleteQueries(Int32 n, UInt32* ids);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glDeleteRenderbuffers", ExactSpelling = true)]
			internal extern static unsafe void glDeleteRenderbuffers(Int32 n, UInt32* renderbuffers);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glDeleteSamplers", ExactSpelling = true)]
			internal extern static unsafe void glDeleteSamplers(Int32 count, UInt32* samplers);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glDeleteShader", ExactSpelling = true)]
			internal extern static void glDeleteShader(UInt32 shader);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glDeleteSync", ExactSpelling = true)]
			internal extern static void glDeleteSync(int sync);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glDeleteTextures", ExactSpelling = true)]
			internal extern static unsafe void glDeleteTextures(Int32 n, UInt32* textures);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glDeleteTransformFeedbacks", ExactSpelling = true)]
			internal extern static unsafe void glDeleteTransformFeedbacks(Int32 n, UInt32* ids);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glDeleteVertexArrays", ExactSpelling = true)]
			internal extern static unsafe void glDeleteVertexArrays(Int32 n, UInt32* arrays);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glDepthFunc", ExactSpelling = true)]
			internal extern static void glDepthFunc(int func);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glDepthMask", ExactSpelling = true)]
			internal extern static void glDepthMask(bool flag);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glDepthRange", ExactSpelling = true)]
			internal extern static void glDepthRange(double near, double far);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glDepthRangeArrayv", ExactSpelling = true)]
			internal extern static unsafe void glDepthRangeArrayv(UInt32 first, Int32 count, double* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glDepthRangef", ExactSpelling = true)]
			internal extern static void glDepthRangef(float n, float f);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glDepthRangeIndexed", ExactSpelling = true)]
			internal extern static void glDepthRangeIndexed(UInt32 index, double n, double f);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glDetachShader", ExactSpelling = true)]
			internal extern static void glDetachShader(UInt32 program, UInt32 shader);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glDisable", ExactSpelling = true)]
			internal extern static void glDisable(int cap);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glDisableClientState", ExactSpelling = true)]
			internal extern static void glDisableClientState(int array);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glDisablei", ExactSpelling = true)]
			internal extern static void glDisablei(int target, UInt32 index);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glDisableVertexAttribArray", ExactSpelling = true)]
			internal extern static void glDisableVertexAttribArray(UInt32 index);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glDrawArrays", ExactSpelling = true)]
			internal extern static void glDrawArrays(int mode, int first, Int32 count);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glDrawArraysIndirect", ExactSpelling = true)]
			internal extern static void glDrawArraysIndirect(int mode, IntPtr indirect);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glDrawArraysInstanced", ExactSpelling = true)]
			internal extern static void glDrawArraysInstanced(int mode, int first, Int32 count, Int32 primcount);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glDrawArraysInstancedBaseInstance", ExactSpelling = true)]
			internal extern static void glDrawArraysInstancedBaseInstance(int mode, int first, Int32 count, Int32 primcount, UInt32 baseinstance);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glDrawBuffer", ExactSpelling = true)]
			internal extern static void glDrawBuffer(int mode);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glDrawBuffers", ExactSpelling = true)]
			internal extern static unsafe void glDrawBuffers(Int32 n, int* bufs);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glDrawElements", ExactSpelling = true)]
			internal extern static void glDrawElements(int mode, Int32 count, int type, IntPtr indices);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glDrawElementsBaseVertex", ExactSpelling = true)]
			internal extern static void glDrawElementsBaseVertex(int mode, Int32 count, int type, IntPtr indices, int basevertex);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glDrawElementsIndirect", ExactSpelling = true)]
			internal extern static void glDrawElementsIndirect(int mode, int type, IntPtr indirect);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glDrawElementsInstanced", ExactSpelling = true)]
			internal extern static void glDrawElementsInstanced(int mode, Int32 count, int type, IntPtr indices, Int32 primcount);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glDrawElementsInstancedBaseInstance", ExactSpelling = true)]
			internal extern static void glDrawElementsInstancedBaseInstance(int mode, Int32 count, int type, IntPtr indices, Int32 primcount, UInt32 baseinstance);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glDrawElementsInstancedBaseVertex", ExactSpelling = true)]
			internal extern static void glDrawElementsInstancedBaseVertex(int mode, Int32 count, int type, IntPtr indices, Int32 primcount, int basevertex);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glDrawElementsInstancedBaseVertexBaseInstance", ExactSpelling = true)]
			internal extern static void glDrawElementsInstancedBaseVertexBaseInstance(int mode, Int32 count, int type, IntPtr indices, Int32 primcount, int basevertex, UInt32 baseinstance);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glDrawPixels", ExactSpelling = true)]
			internal extern static void glDrawPixels(Int32 width, Int32 height, int format, int type, IntPtr pixels);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glDrawRangeElements", ExactSpelling = true)]
			internal extern static void glDrawRangeElements(int mode, UInt32 start, UInt32 end, Int32 count, int type, IntPtr indices);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glDrawRangeElementsBaseVertex", ExactSpelling = true)]
			internal extern static void glDrawRangeElementsBaseVertex(int mode, UInt32 start, UInt32 end, Int32 count, int type, IntPtr indices, int basevertex);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glDrawTransformFeedback", ExactSpelling = true)]
			internal extern static void glDrawTransformFeedback(int mode, UInt32 id);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glDrawTransformFeedbackInstanced", ExactSpelling = true)]
			internal extern static void glDrawTransformFeedbackInstanced(int mode, UInt32 id, Int32 primcount);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glDrawTransformFeedbackStream", ExactSpelling = true)]
			internal extern static void glDrawTransformFeedbackStream(int mode, UInt32 id, UInt32 stream);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glDrawTransformFeedbackStreamInstanced", ExactSpelling = true)]
			internal extern static void glDrawTransformFeedbackStreamInstanced(int mode, UInt32 id, UInt32 stream, Int32 primcount);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glEdgeFlag", ExactSpelling = true)]
			internal extern static void glEdgeFlag(bool flag);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glEdgeFlagPointer", ExactSpelling = true)]
			internal extern static void glEdgeFlagPointer(Int32 stride, IntPtr pointer);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glEdgeFlagv", ExactSpelling = true)]
			internal extern static unsafe void glEdgeFlagv(bool* flag);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glEnable", ExactSpelling = true)]
			internal extern static void glEnable(int cap);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glEnableClientState", ExactSpelling = true)]
			internal extern static void glEnableClientState(int array);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glEnablei", ExactSpelling = true)]
			internal extern static void glEnablei(int target, UInt32 index);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glEnableVertexAttribArray", ExactSpelling = true)]
			internal extern static void glEnableVertexAttribArray(UInt32 index);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glEnd", ExactSpelling = true)]
			internal extern static void glEnd();

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glEndConditionalRender", ExactSpelling = true)]
			internal extern static void glEndConditionalRender();

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glEndList", ExactSpelling = true)]
			internal extern static void glEndList();

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glEndQuery", ExactSpelling = true)]
			internal extern static void glEndQuery(int target);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glEndQueryIndexed", ExactSpelling = true)]
			internal extern static void glEndQueryIndexed(int target, UInt32 index);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glEndTransformFeedback", ExactSpelling = true)]
			internal extern static void glEndTransformFeedback();

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glEvalCoord1d", ExactSpelling = true)]
			internal extern static void glEvalCoord1d(double u);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glEvalCoord1dv", ExactSpelling = true)]
			internal extern static unsafe void glEvalCoord1dv(double* u);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glEvalCoord1f", ExactSpelling = true)]
			internal extern static void glEvalCoord1f(float u);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glEvalCoord1fv", ExactSpelling = true)]
			internal extern static unsafe void glEvalCoord1fv(float* u);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glEvalCoord2d", ExactSpelling = true)]
			internal extern static void glEvalCoord2d(double u, double v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glEvalCoord2dv", ExactSpelling = true)]
			internal extern static unsafe void glEvalCoord2dv(double* u);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glEvalCoord2f", ExactSpelling = true)]
			internal extern static void glEvalCoord2f(float u, float v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glEvalCoord2fv", ExactSpelling = true)]
			internal extern static unsafe void glEvalCoord2fv(float* u);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glEvalMesh1", ExactSpelling = true)]
			internal extern static void glEvalMesh1(int mode, int i1, int i2);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glEvalMesh2", ExactSpelling = true)]
			internal extern static void glEvalMesh2(int mode, int i1, int i2, int j1, int j2);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glEvalPoint1", ExactSpelling = true)]
			internal extern static void glEvalPoint1(int i);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glEvalPoint2", ExactSpelling = true)]
			internal extern static void glEvalPoint2(int i, int j);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glFeedbackBuffer", ExactSpelling = true)]
			internal extern static unsafe void glFeedbackBuffer(Int32 size, int type, [Out]float* buffer);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glFenceSync", ExactSpelling = true)]
			internal extern static int glFenceSync(int condition, uint flags);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glFinish", ExactSpelling = true)]
			internal extern static void glFinish();

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glFlush", ExactSpelling = true)]
			internal extern static void glFlush();

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glFlushMappedBufferRange", ExactSpelling = true)]
			internal extern static void glFlushMappedBufferRange(int target, IntPtr offset, UInt32 length);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glFogCoordd", ExactSpelling = true)]
			internal extern static void glFogCoordd(double coord);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glFogCoorddv", ExactSpelling = true)]
			internal extern static unsafe void glFogCoorddv(double* coord);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glFogCoordf", ExactSpelling = true)]
			internal extern static void glFogCoordf(float coord);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glFogCoordfv", ExactSpelling = true)]
			internal extern static unsafe void glFogCoordfv(float* coord);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glFogCoordPointer", ExactSpelling = true)]
			internal extern static void glFogCoordPointer(int type, Int32 stride, IntPtr pointer);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glFogf", ExactSpelling = true)]
			internal extern static void glFogf(int pname, float param);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glFogfv", ExactSpelling = true)]
			internal extern static unsafe void glFogfv(int pname, float* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glFogi", ExactSpelling = true)]
			internal extern static void glFogi(int pname, int param);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glFogiv", ExactSpelling = true)]
			internal extern static unsafe void glFogiv(int pname, int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glFramebufferRenderbuffer", ExactSpelling = true)]
			internal extern static void glFramebufferRenderbuffer(int target, int attachment, int renderbuffertarget, UInt32 renderbuffer);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glFramebufferTexture", ExactSpelling = true)]
			internal extern static void glFramebufferTexture(int target, int attachment, UInt32 texture, int level);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glFramebufferTexture1D", ExactSpelling = true)]
			internal extern static void glFramebufferTexture1D(int target, int attachment, int textarget, UInt32 texture, int level);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glFramebufferTexture2D", ExactSpelling = true)]
			internal extern static void glFramebufferTexture2D(int target, int attachment, int textarget, UInt32 texture, int level);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glFramebufferTexture3D", ExactSpelling = true)]
			internal extern static void glFramebufferTexture3D(int target, int attachment, int textarget, UInt32 texture, int level, int zoffset);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glFramebufferTextureLayer", ExactSpelling = true)]
			internal extern static void glFramebufferTextureLayer(int target, int attachment, UInt32 texture, int level, int layer);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glFrontFace", ExactSpelling = true)]
			internal extern static void glFrontFace(int mode);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glFrustum", ExactSpelling = true)]
			internal extern static void glFrustum(double left, double right, double bottom, double top, double zNear, double zFar);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGenBuffers", ExactSpelling = true)]
			internal extern static unsafe void glGenBuffers(Int32 n, [Out]UInt32* buffers);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGenerateMipmap", ExactSpelling = true)]
			internal extern static void glGenerateMipmap(int target);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGenFramebuffers", ExactSpelling = true)]
			internal extern static unsafe void glGenFramebuffers(Int32 n, [Out]UInt32* framebuffers);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGenLists", ExactSpelling = true)]
			internal extern static UInt32 glGenLists(Int32 range);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGenProgramPipelines", ExactSpelling = true)]
			internal extern static unsafe void glGenProgramPipelines(Int32 n, [Out]UInt32* pipelines);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGenQueries", ExactSpelling = true)]
			internal extern static unsafe void glGenQueries(Int32 n, [Out]UInt32* ids);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGenRenderbuffers", ExactSpelling = true)]
			internal extern static unsafe void glGenRenderbuffers(Int32 n, [Out]UInt32* renderbuffers);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGenSamplers", ExactSpelling = true)]
			internal extern static unsafe void glGenSamplers(Int32 count, [Out]UInt32* samplers);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGenTextures", ExactSpelling = true)]
			internal extern static unsafe void glGenTextures(Int32 n, [Out]UInt32* textures);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGenTransformFeedbacks", ExactSpelling = true)]
			internal extern static unsafe void glGenTransformFeedbacks(Int32 n, [Out]UInt32* ids);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGenVertexArrays", ExactSpelling = true)]
			internal extern static unsafe void glGenVertexArrays(Int32 n, [Out]UInt32* arrays);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetActiveAtomicCounterBufferiv", ExactSpelling = true)]
			internal extern static unsafe void glGetActiveAtomicCounterBufferiv(UInt32 program, UInt32 bufferIndex, int pname, [Out]int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetActiveAttrib", ExactSpelling = true)]
			internal extern static unsafe void glGetActiveAttrib(UInt32 program, UInt32 index, Int32 bufSize, [Out]Int32 length, [Out]int size, [Out]int type, [Out]StringBuilder name);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetActiveSubroutineName", ExactSpelling = true)]
			internal extern static unsafe void glGetActiveSubroutineName(UInt32 program, int shadertype, UInt32 index, Int32 bufsize, [Out]Int32 length, [Out]StringBuilder name);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetActiveSubroutineUniformiv", ExactSpelling = true)]
			internal extern static unsafe void glGetActiveSubroutineUniformiv(UInt32 program, int shadertype, UInt32 index, int pname, [Out]int* values);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetActiveSubroutineUniformName", ExactSpelling = true)]
			internal extern static unsafe void glGetActiveSubroutineUniformName(UInt32 program, int shadertype, UInt32 index, Int32 bufsize, [Out]Int32 length, [Out]StringBuilder name);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetActiveUniform", ExactSpelling = true)]
			internal extern static unsafe void glGetActiveUniform(UInt32 program, UInt32 index, Int32 bufSize, [Out]Int32 length, [Out]int size, [Out]int type, [Out]StringBuilder name);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetActiveUniformBlockiv", ExactSpelling = true)]
			internal extern static unsafe void glGetActiveUniformBlockiv(UInt32 program, UInt32 uniformBlockIndex, int pname, [Out]int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetActiveUniformBlockName", ExactSpelling = true)]
			internal extern static unsafe void glGetActiveUniformBlockName(UInt32 program, UInt32 uniformBlockIndex, Int32 bufSize, [Out]Int32 length, [Out]StringBuilder uniformBlockName);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetActiveUniformName", ExactSpelling = true)]
			internal extern static unsafe void glGetActiveUniformName(UInt32 program, UInt32 uniformIndex, Int32 bufSize, [Out]Int32 length, [Out]StringBuilder uniformName);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetActiveUniformsiv", ExactSpelling = true)]
			internal extern static unsafe void glGetActiveUniformsiv(UInt32 program, Int32 uniformCount, UInt32* uniformIndices, int pname, [Out]int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetAttachedShaders", ExactSpelling = true)]
			internal extern static unsafe void glGetAttachedShaders(UInt32 program, Int32 maxCount, [Out]Int32 count, [Out]UInt32* obj);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetAttribLocation", ExactSpelling = true)]
			internal extern static int glGetAttribLocation(UInt32 program, string name);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetBooleani_v", ExactSpelling = true)]
			internal extern static unsafe void glGetBooleani_v(int target, UInt32 index, [Out]bool* data);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetBooleanv", ExactSpelling = true)]
			internal extern static unsafe void glGetBooleanv(int pname, [Out]bool* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetBufferParameteri64v", ExactSpelling = true)]
			internal extern static unsafe void glGetBufferParameteri64v(int target, int pname, [Out]Int64* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetBufferParameteriv", ExactSpelling = true)]
			internal extern static unsafe void glGetBufferParameteriv(int target, int pname, [Out]int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetBufferPointerv", ExactSpelling = true)]
			internal extern static unsafe void glGetBufferPointerv(int target, int pname, [Out]IntPtr @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetBufferSubData", ExactSpelling = true)]
			internal extern static void glGetBufferSubData(int target, IntPtr offset, UInt32 size, [Out]IntPtr data);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetClipPlane", ExactSpelling = true)]
			internal extern static unsafe void glGetClipPlane(int plane, [Out]double* equation);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetColorTable", ExactSpelling = true)]
			internal extern static void glGetColorTable(int target, int format, int type, [Out]IntPtr table);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetColorTableParameterfv", ExactSpelling = true)]
			internal extern static unsafe void glGetColorTableParameterfv(int target, int pname, [Out]float* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetColorTableParameteriv", ExactSpelling = true)]
			internal extern static unsafe void glGetColorTableParameteriv(int target, int pname, [Out]int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetCompressedTexImage", ExactSpelling = true)]
			internal extern static void glGetCompressedTexImage(int target, int level, [Out]IntPtr img);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetConvolutionFilter", ExactSpelling = true)]
			internal extern static void glGetConvolutionFilter(int target, int format, int type, [Out]IntPtr image);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetConvolutionParameterfv", ExactSpelling = true)]
			internal extern static unsafe void glGetConvolutionParameterfv(int target, int pname, [Out]float* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetConvolutionParameteriv", ExactSpelling = true)]
			internal extern static unsafe void glGetConvolutionParameteriv(int target, int pname, [Out]int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetDoublei_v", ExactSpelling = true)]
			internal extern static unsafe void glGetDoublei_v(int target, UInt32 index, [Out]double* data);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetDoublev", ExactSpelling = true)]
			internal extern static unsafe void glGetDoublev(int pname, [Out]double* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetError", ExactSpelling = true)]
			internal extern static int glGetError();

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetFloati_v", ExactSpelling = true)]
			internal extern static unsafe void glGetFloati_v(int target, UInt32 index, [Out]float* data);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetFloatv", ExactSpelling = true)]
			internal extern static unsafe void glGetFloatv(int pname, [Out]float* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetFragDataIndex", ExactSpelling = true)]
			internal extern static int glGetFragDataIndex(UInt32 program, string name);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetFragDataLocation", ExactSpelling = true)]
			internal extern static int glGetFragDataLocation(UInt32 program, string name);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetFramebufferAttachmentParameteriv", ExactSpelling = true)]
			internal extern static unsafe void glGetFramebufferAttachmentParameteriv(int target, int attachment, int pname, [Out]int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetHistogram", ExactSpelling = true)]
			internal extern static void glGetHistogram(int target, bool reset, int format, int type, [Out]IntPtr values);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetHistogramParameterfv", ExactSpelling = true)]
			internal extern static unsafe void glGetHistogramParameterfv(int target, int pname, [Out]float* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetHistogramParameteriv", ExactSpelling = true)]
			internal extern static unsafe void glGetHistogramParameteriv(int target, int pname, [Out]int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetInteger64i_v", ExactSpelling = true)]
			internal extern static unsafe void glGetInteger64i_v(int target, UInt32 index, [Out]Int64* data);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetInteger64v", ExactSpelling = true)]
			internal extern static unsafe void glGetInteger64v(int pname, [Out]Int64* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetIntegeri_v", ExactSpelling = true)]
			internal extern static unsafe void glGetIntegeri_v(int target, UInt32 index, [Out]int* data);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetIntegerv", ExactSpelling = true)]
			internal extern static unsafe void glGetIntegerv(int pname, [Out]int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetInternalformativ", ExactSpelling = true)]
			internal extern static unsafe void glGetInternalformativ(int target, int internalformat, int pname, Int32 bufSize, [Out]int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetLightfv", ExactSpelling = true)]
			internal extern static unsafe void glGetLightfv(int light, int pname, [Out]float* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetLightiv", ExactSpelling = true)]
			internal extern static unsafe void glGetLightiv(int light, int pname, [Out]int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetMapdv", ExactSpelling = true)]
			internal extern static unsafe void glGetMapdv(int target, int query, [Out]double* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetMapfv", ExactSpelling = true)]
			internal extern static unsafe void glGetMapfv(int target, int query, [Out]float* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetMapiv", ExactSpelling = true)]
			internal extern static unsafe void glGetMapiv(int target, int query, [Out]int* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetMaterialfv", ExactSpelling = true)]
			internal extern static unsafe void glGetMaterialfv(int face, int pname, [Out]float* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetMaterialiv", ExactSpelling = true)]
			internal extern static unsafe void glGetMaterialiv(int face, int pname, [Out]int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetMinmax", ExactSpelling = true)]
			internal extern static void glGetMinmax(int target, bool reset, int format, int type, [Out]IntPtr values);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetMinmaxParameterfv", ExactSpelling = true)]
			internal extern static unsafe void glGetMinmaxParameterfv(int target, int pname, [Out]float* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetMinmaxParameteriv", ExactSpelling = true)]
			internal extern static unsafe void glGetMinmaxParameteriv(int target, int pname, [Out]int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetMultisamplefv", ExactSpelling = true)]
			internal extern static unsafe void glGetMultisamplefv(int pname, UInt32 index, [Out]float* val);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetPixelMapfv", ExactSpelling = true)]
			internal extern static unsafe void glGetPixelMapfv(int map, [Out]float* values);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetPixelMapuiv", ExactSpelling = true)]
			internal extern static unsafe void glGetPixelMapuiv(int map, [Out]UInt32* values);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetPixelMapusv", ExactSpelling = true)]
			internal extern static unsafe void glGetPixelMapusv(int map, [Out]UInt16* values);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetPointerv", ExactSpelling = true)]
			internal extern static unsafe void glGetPointerv(int pname, [Out]IntPtr @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetPolygonStipple", ExactSpelling = true)]
			internal extern static unsafe void glGetPolygonStipple([Out]byte* mask);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetProgramBinary", ExactSpelling = true)]
			internal extern static unsafe void glGetProgramBinary(UInt32 program, Int32 bufSize, [Out]Int32 length, [Out]int binaryFormat, [Out]IntPtr binary);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetProgramInfoLog", ExactSpelling = true)]
			internal extern static unsafe void glGetProgramInfoLog(UInt32 program, Int32 bufSize, [Out]Int32 length, [Out]StringBuilder infoLog);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetProgramiv", ExactSpelling = true)]
			internal extern static unsafe void glGetProgramiv(UInt32 program, int pname, [Out]int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetProgramPipelineInfoLog", ExactSpelling = true)]
			internal extern static unsafe void glGetProgramPipelineInfoLog(UInt32 pipeline, Int32 bufSize, [Out]Int32 length, [Out]StringBuilder infoLog);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetProgramPipelineiv", ExactSpelling = true)]
			internal extern static unsafe void glGetProgramPipelineiv(UInt32 pipeline, int pname, [Out]int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetProgramStageiv", ExactSpelling = true)]
			internal extern static unsafe void glGetProgramStageiv(UInt32 program, int shadertype, int pname, [Out]int values);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetQueryIndexediv", ExactSpelling = true)]
			internal extern static unsafe void glGetQueryIndexediv(int target, UInt32 index, int pname, [Out]int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetQueryiv", ExactSpelling = true)]
			internal extern static unsafe void glGetQueryiv(int target, int pname, [Out]int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetQueryObjecti64v", ExactSpelling = true)]
			internal extern static unsafe void glGetQueryObjecti64v(UInt32 id, int pname, [Out]Int64* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetQueryObjectiv", ExactSpelling = true)]
			internal extern static unsafe void glGetQueryObjectiv(UInt32 id, int pname, [Out]int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetQueryObjectui64v", ExactSpelling = true)]
			internal extern static unsafe void glGetQueryObjectui64v(UInt32 id, int pname, [Out]UInt64* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetQueryObjectuiv", ExactSpelling = true)]
			internal extern static unsafe void glGetQueryObjectuiv(UInt32 id, int pname, [Out]UInt32* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetRenderbufferParameteriv", ExactSpelling = true)]
			internal extern static unsafe void glGetRenderbufferParameteriv(int target, int pname, [Out]int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetSamplerParameterfv", ExactSpelling = true)]
			internal extern static unsafe void glGetSamplerParameterfv(UInt32 sampler, int pname, [Out]float* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetSamplerParameterIiv", ExactSpelling = true)]
			internal extern static unsafe void glGetSamplerParameterIiv(UInt32 sampler, int pname, [Out]int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetSamplerParameterIuiv", ExactSpelling = true)]
			internal extern static unsafe void glGetSamplerParameterIuiv(UInt32 sampler, int pname, [Out]UInt32* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetSamplerParameteriv", ExactSpelling = true)]
			internal extern static unsafe void glGetSamplerParameteriv(UInt32 sampler, int pname, [Out]int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetSeparableFilter", ExactSpelling = true)]
			internal extern static void glGetSeparableFilter(int target, int format, int type, [Out]IntPtr row, [Out]IntPtr column, [Out]IntPtr span);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetShaderInfoLog", ExactSpelling = true)]
			internal extern static unsafe void glGetShaderInfoLog(UInt32 shader, Int32 bufSize, [Out]Int32 length, [Out]StringBuilder infoLog);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetShaderiv", ExactSpelling = true)]
			internal extern static unsafe void glGetShaderiv(UInt32 shader, int pname, [Out]int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetShaderPrecisionFormat", ExactSpelling = true)]
			internal extern static unsafe void glGetShaderPrecisionFormat(int shadertype, int precisiontype, [Out]int* range, [Out]int* precision);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetShaderSource", ExactSpelling = true)]
			internal extern static unsafe void glGetShaderSource(UInt32 shader, Int32 bufSize, [Out]Int32 length, [Out]StringBuilder source);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetString", ExactSpelling = true)]
			internal extern static IntPtr glGetString(int name);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetStringi", ExactSpelling = true)]
			internal extern static IntPtr glGetStringi(int name, UInt32 index);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetSubroutineIndex", ExactSpelling = true)]
			internal extern static UInt32 glGetSubroutineIndex(UInt32 program, int shadertype, string name);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetSubroutineUniformLocation", ExactSpelling = true)]
			internal extern static int glGetSubroutineUniformLocation(UInt32 program, int shadertype, string name);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetSynciv", ExactSpelling = true)]
			internal extern static unsafe void glGetSynciv(int sync, int pname, Int32 bufSize, [Out]Int32 length, [Out]int* values);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetTexEnvfv", ExactSpelling = true)]
			internal extern static unsafe void glGetTexEnvfv(int target, int pname, [Out]float* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetTexEnviv", ExactSpelling = true)]
			internal extern static unsafe void glGetTexEnviv(int target, int pname, [Out]int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetTexGendv", ExactSpelling = true)]
			internal extern static unsafe void glGetTexGendv(int coord, int pname, [Out]double* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetTexGenfv", ExactSpelling = true)]
			internal extern static unsafe void glGetTexGenfv(int coord, int pname, [Out]float* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetTexGeniv", ExactSpelling = true)]
			internal extern static unsafe void glGetTexGeniv(int coord, int pname, [Out]int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetTexImage", ExactSpelling = true)]
			internal extern static void glGetTexImage(int target, int level, int format, int type, [Out]IntPtr pixels);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetTexLevelParameterfv", ExactSpelling = true)]
			internal extern static unsafe void glGetTexLevelParameterfv(int target, int level, int pname, [Out]float* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetTexLevelParameteriv", ExactSpelling = true)]
			internal extern static unsafe void glGetTexLevelParameteriv(int target, int level, int pname, [Out]int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetTexParameterfv", ExactSpelling = true)]
			internal extern static unsafe void glGetTexParameterfv(int target, int pname, [Out]float* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetTexParameterIiv", ExactSpelling = true)]
			internal extern static unsafe void glGetTexParameterIiv(int target, int pname, [Out]int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetTexParameterIuiv", ExactSpelling = true)]
			internal extern static unsafe void glGetTexParameterIuiv(int target, int pname, [Out]UInt32* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetTexParameteriv", ExactSpelling = true)]
			internal extern static unsafe void glGetTexParameteriv(int target, int pname, [Out]int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetTransformFeedbackVarying", ExactSpelling = true)]
			internal extern static unsafe void glGetTransformFeedbackVarying(UInt32 program, UInt32 index, Int32 bufSize, [Out]Int32 length, [Out]Int32 size, [Out]int type, [Out]StringBuilder name);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetUniformBlockIndex", ExactSpelling = true)]
			internal extern static UInt32 glGetUniformBlockIndex(UInt32 program, string uniformBlockName);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetUniformdv", ExactSpelling = true)]
			internal extern static unsafe void glGetUniformdv(UInt32 program, int location, [Out]double* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetUniformfv", ExactSpelling = true)]
			internal extern static unsafe void glGetUniformfv(UInt32 program, int location, [Out]float* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetUniformIndices", ExactSpelling = true)]
			internal extern static unsafe void glGetUniformIndices(UInt32 program, Int32 uniformCount, string[] uniformNames, [Out]UInt32* uniformIndices);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetUniformiv", ExactSpelling = true)]
			internal extern static unsafe void glGetUniformiv(UInt32 program, int location, [Out]int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetUniformLocation", ExactSpelling = true)]
			internal extern static int glGetUniformLocation(UInt32 program, string name);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetUniformSubroutineuiv", ExactSpelling = true)]
			internal extern static unsafe void glGetUniformSubroutineuiv(int shadertype, int location, [Out]UInt32 @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetUniformuiv", ExactSpelling = true)]
			internal extern static unsafe void glGetUniformuiv(UInt32 program, int location, [Out]UInt32* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetVertexAttribdv", ExactSpelling = true)]
			internal extern static unsafe void glGetVertexAttribdv(UInt32 index, int pname, [Out]double* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetVertexAttribfv", ExactSpelling = true)]
			internal extern static unsafe void glGetVertexAttribfv(UInt32 index, int pname, [Out]float* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetVertexAttribIiv", ExactSpelling = true)]
			internal extern static unsafe void glGetVertexAttribIiv(UInt32 index, int pname, [Out]int @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetVertexAttribIuiv", ExactSpelling = true)]
			internal extern static unsafe void glGetVertexAttribIuiv(UInt32 index, int pname, [Out]UInt32 @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetVertexAttribiv", ExactSpelling = true)]
			internal extern static unsafe void glGetVertexAttribiv(UInt32 index, int pname, [Out]int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetVertexAttribLdv", ExactSpelling = true)]
			internal extern static unsafe void glGetVertexAttribLdv(UInt32 index, int pname, [Out]double* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetVertexAttribPointerv", ExactSpelling = true)]
			internal extern static unsafe void glGetVertexAttribPointerv(UInt32 index, int pname, [Out]IntPtr pointer);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glHint", ExactSpelling = true)]
			internal extern static void glHint(int target, int mode);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glHistogram", ExactSpelling = true)]
			internal extern static void glHistogram(int target, Int32 width, int internalformat, bool sink);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glIndexd", ExactSpelling = true)]
			internal extern static void glIndexd(double c);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glIndexdv", ExactSpelling = true)]
			internal extern static unsafe void glIndexdv(double* c);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glIndexf", ExactSpelling = true)]
			internal extern static void glIndexf(float c);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glIndexfv", ExactSpelling = true)]
			internal extern static unsafe void glIndexfv(float* c);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glIndexi", ExactSpelling = true)]
			internal extern static void glIndexi(int c);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glIndexiv", ExactSpelling = true)]
			internal extern static unsafe void glIndexiv(int* c);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glIndexMask", ExactSpelling = true)]
			internal extern static void glIndexMask(UInt32 mask);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glIndexPointer", ExactSpelling = true)]
			internal extern static void glIndexPointer(int type, Int32 stride, IntPtr pointer);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glIndexs", ExactSpelling = true)]
			internal extern static void glIndexs(Int16 c);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glIndexsv", ExactSpelling = true)]
			internal extern static unsafe void glIndexsv(Int16* c);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glIndexub", ExactSpelling = true)]
			internal extern static void glIndexub(byte c);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glIndexubv", ExactSpelling = true)]
			internal extern static unsafe void glIndexubv(byte* c);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glInitNames", ExactSpelling = true)]
			internal extern static void glInitNames();

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glInterleavedArrays", ExactSpelling = true)]
			internal extern static void glInterleavedArrays(int format, Int32 stride, IntPtr pointer);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glIsBuffer", ExactSpelling = true)]
			internal extern static bool glIsBuffer(UInt32 buffer);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glIsEnabled", ExactSpelling = true)]
			internal extern static bool glIsEnabled(int cap);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glIsEnabledi", ExactSpelling = true)]
			internal extern static bool glIsEnabledi(int target, UInt32 index);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glIsFramebuffer", ExactSpelling = true)]
			internal extern static bool glIsFramebuffer(UInt32 framebuffer);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glIsList", ExactSpelling = true)]
			internal extern static bool glIsList(UInt32 list);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glIsProgram", ExactSpelling = true)]
			internal extern static bool glIsProgram(UInt32 program);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glIsProgramPipeline", ExactSpelling = true)]
			internal extern static bool glIsProgramPipeline(UInt32 pipeline);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glIsQuery", ExactSpelling = true)]
			internal extern static bool glIsQuery(UInt32 id);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glIsRenderbuffer", ExactSpelling = true)]
			internal extern static bool glIsRenderbuffer(UInt32 renderbuffer);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glIsSampler", ExactSpelling = true)]
			internal extern static bool glIsSampler(UInt32 sampler);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glIsShader", ExactSpelling = true)]
			internal extern static bool glIsShader(UInt32 shader);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glIsSync", ExactSpelling = true)]
			internal extern static bool glIsSync(int sync);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glIsTexture", ExactSpelling = true)]
			internal extern static bool glIsTexture(UInt32 texture);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glIsTransformFeedback", ExactSpelling = true)]
			internal extern static bool glIsTransformFeedback(UInt32 id);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glIsVertexArray", ExactSpelling = true)]
			internal extern static bool glIsVertexArray(UInt32 array);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glLightf", ExactSpelling = true)]
			internal extern static void glLightf(int light, int pname, float param);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glLightfv", ExactSpelling = true)]
			internal extern static unsafe void glLightfv(int light, int pname, float* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glLighti", ExactSpelling = true)]
			internal extern static void glLighti(int light, int pname, int param);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glLightiv", ExactSpelling = true)]
			internal extern static unsafe void glLightiv(int light, int pname, int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glLightModelf", ExactSpelling = true)]
			internal extern static void glLightModelf(int pname, float param);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glLightModelfv", ExactSpelling = true)]
			internal extern static unsafe void glLightModelfv(int pname, float* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glLightModeli", ExactSpelling = true)]
			internal extern static void glLightModeli(int pname, int param);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glLightModeliv", ExactSpelling = true)]
			internal extern static unsafe void glLightModeliv(int pname, int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glLineStipple", ExactSpelling = true)]
			internal extern static void glLineStipple(int factor, UInt16 pattern);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glLineWidth", ExactSpelling = true)]
			internal extern static void glLineWidth(float width);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glLinkProgram", ExactSpelling = true)]
			internal extern static void glLinkProgram(UInt32 program);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glListBase", ExactSpelling = true)]
			internal extern static void glListBase(UInt32 @base);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glLoadIdentity", ExactSpelling = true)]
			internal extern static void glLoadIdentity();

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glLoadMatrixd", ExactSpelling = true)]
			internal extern static unsafe void glLoadMatrixd(double* m);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glLoadMatrixf", ExactSpelling = true)]
			internal extern static unsafe void glLoadMatrixf(float* m);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glLoadName", ExactSpelling = true)]
			internal extern static void glLoadName(UInt32 name);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glLoadTransposeMatrixd", ExactSpelling = true)]
			internal extern static unsafe void glLoadTransposeMatrixd(double* m);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glLoadTransposeMatrixf", ExactSpelling = true)]
			internal extern static unsafe void glLoadTransposeMatrixf(float* m);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glLogicOp", ExactSpelling = true)]
			internal extern static void glLogicOp(int opcode);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMap1d", ExactSpelling = true)]
			internal extern static unsafe void glMap1d(int target, double u1, double u2, int stride, int order, double* points);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMap1f", ExactSpelling = true)]
			internal extern static unsafe void glMap1f(int target, float u1, float u2, int stride, int order, float* points);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMap2d", ExactSpelling = true)]
			internal extern static unsafe void glMap2d(int target, double u1, double u2, int ustride, int uorder, double v1, double v2, int vstride, int vorder, double* points);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMap2f", ExactSpelling = true)]
			internal extern static unsafe void glMap2f(int target, float u1, float u2, int ustride, int uorder, float v1, float v2, int vstride, int vorder, float* points);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMapBuffer", ExactSpelling = true)]
			internal extern static IntPtr glMapBuffer(int target, int access);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMapBufferRange", ExactSpelling = true)]
			internal extern static IntPtr glMapBufferRange(int target, IntPtr offset, UInt32 length, uint access);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMapGrid1d", ExactSpelling = true)]
			internal extern static void glMapGrid1d(int un, double u1, double u2);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMapGrid1f", ExactSpelling = true)]
			internal extern static void glMapGrid1f(int un, float u1, float u2);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMapGrid2d", ExactSpelling = true)]
			internal extern static void glMapGrid2d(int un, double u1, double u2, int vn, double v1, double v2);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMapGrid2f", ExactSpelling = true)]
			internal extern static void glMapGrid2f(int un, float u1, float u2, int vn, float v1, float v2);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMaterialf", ExactSpelling = true)]
			internal extern static void glMaterialf(int face, int pname, float param);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMaterialfv", ExactSpelling = true)]
			internal extern static unsafe void glMaterialfv(int face, int pname, float* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMateriali", ExactSpelling = true)]
			internal extern static void glMateriali(int face, int pname, int param);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMaterialiv", ExactSpelling = true)]
			internal extern static unsafe void glMaterialiv(int face, int pname, int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMatrixMode", ExactSpelling = true)]
			internal extern static void glMatrixMode(int mode);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMemoryBarrier", ExactSpelling = true)]
			internal extern static void glMemoryBarrier(uint barriers);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMinmax", ExactSpelling = true)]
			internal extern static void glMinmax(int target, int internalformat, bool sink);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMinSampleShading", ExactSpelling = true)]
			internal extern static void glMinSampleShading(float value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiDrawArrays", ExactSpelling = true)]
			internal extern static unsafe void glMultiDrawArrays(int mode, int* first, Int32* count, Int32 primcount);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiDrawElements", ExactSpelling = true)]
			internal extern static unsafe void glMultiDrawElements(int mode, Int32* count, int type, IntPtr* indices, Int32 primcount);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiDrawElementsBaseVertex", ExactSpelling = true)]
			internal extern static unsafe void glMultiDrawElementsBaseVertex(int mode, Int32* count, int type, IntPtr* indices, Int32 primcount, int* basevertex);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoord1d", ExactSpelling = true)]
			internal extern static void glMultiTexCoord1d(int target, double s);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoord1dv", ExactSpelling = true)]
			internal extern static unsafe void glMultiTexCoord1dv(int target, double* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoord1f", ExactSpelling = true)]
			internal extern static void glMultiTexCoord1f(int target, float s);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoord1fv", ExactSpelling = true)]
			internal extern static unsafe void glMultiTexCoord1fv(int target, float* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoord1i", ExactSpelling = true)]
			internal extern static void glMultiTexCoord1i(int target, int s);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoord1iv", ExactSpelling = true)]
			internal extern static unsafe void glMultiTexCoord1iv(int target, int* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoord1s", ExactSpelling = true)]
			internal extern static void glMultiTexCoord1s(int target, Int16 s);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoord1sv", ExactSpelling = true)]
			internal extern static unsafe void glMultiTexCoord1sv(int target, Int16* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoord2d", ExactSpelling = true)]
			internal extern static void glMultiTexCoord2d(int target, double s, double t);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoord2dv", ExactSpelling = true)]
			internal extern static unsafe void glMultiTexCoord2dv(int target, double* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoord2f", ExactSpelling = true)]
			internal extern static void glMultiTexCoord2f(int target, float s, float t);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoord2fv", ExactSpelling = true)]
			internal extern static unsafe void glMultiTexCoord2fv(int target, float* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoord2i", ExactSpelling = true)]
			internal extern static void glMultiTexCoord2i(int target, int s, int t);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoord2iv", ExactSpelling = true)]
			internal extern static unsafe void glMultiTexCoord2iv(int target, int* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoord2s", ExactSpelling = true)]
			internal extern static void glMultiTexCoord2s(int target, Int16 s, Int16 t);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoord2sv", ExactSpelling = true)]
			internal extern static unsafe void glMultiTexCoord2sv(int target, Int16* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoord3d", ExactSpelling = true)]
			internal extern static void glMultiTexCoord3d(int target, double s, double t, double r);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoord3dv", ExactSpelling = true)]
			internal extern static unsafe void glMultiTexCoord3dv(int target, double* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoord3f", ExactSpelling = true)]
			internal extern static void glMultiTexCoord3f(int target, float s, float t, float r);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoord3fv", ExactSpelling = true)]
			internal extern static unsafe void glMultiTexCoord3fv(int target, float* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoord3i", ExactSpelling = true)]
			internal extern static void glMultiTexCoord3i(int target, int s, int t, int r);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoord3iv", ExactSpelling = true)]
			internal extern static unsafe void glMultiTexCoord3iv(int target, int* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoord3s", ExactSpelling = true)]
			internal extern static void glMultiTexCoord3s(int target, Int16 s, Int16 t, Int16 r);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoord3sv", ExactSpelling = true)]
			internal extern static unsafe void glMultiTexCoord3sv(int target, Int16* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoord4d", ExactSpelling = true)]
			internal extern static void glMultiTexCoord4d(int target, double s, double t, double r, double q);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoord4dv", ExactSpelling = true)]
			internal extern static unsafe void glMultiTexCoord4dv(int target, double* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoord4f", ExactSpelling = true)]
			internal extern static void glMultiTexCoord4f(int target, float s, float t, float r, float q);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoord4fv", ExactSpelling = true)]
			internal extern static unsafe void glMultiTexCoord4fv(int target, float* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoord4i", ExactSpelling = true)]
			internal extern static void glMultiTexCoord4i(int target, int s, int t, int r, int q);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoord4iv", ExactSpelling = true)]
			internal extern static unsafe void glMultiTexCoord4iv(int target, int* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoord4s", ExactSpelling = true)]
			internal extern static void glMultiTexCoord4s(int target, Int16 s, Int16 t, Int16 r, Int16 q);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoord4sv", ExactSpelling = true)]
			internal extern static unsafe void glMultiTexCoord4sv(int target, Int16* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoordP1ui", ExactSpelling = true)]
			internal extern static void glMultiTexCoordP1ui(int texture, int type, UInt32 coords);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoordP1uiv", ExactSpelling = true)]
			internal extern static unsafe void glMultiTexCoordP1uiv(int texture, int type, UInt32* coords);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoordP2ui", ExactSpelling = true)]
			internal extern static void glMultiTexCoordP2ui(int texture, int type, UInt32 coords);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoordP2uiv", ExactSpelling = true)]
			internal extern static unsafe void glMultiTexCoordP2uiv(int texture, int type, UInt32* coords);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoordP3ui", ExactSpelling = true)]
			internal extern static void glMultiTexCoordP3ui(int texture, int type, UInt32 coords);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoordP3uiv", ExactSpelling = true)]
			internal extern static unsafe void glMultiTexCoordP3uiv(int texture, int type, UInt32* coords);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoordP4ui", ExactSpelling = true)]
			internal extern static void glMultiTexCoordP4ui(int texture, int type, UInt32 coords);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoordP4uiv", ExactSpelling = true)]
			internal extern static unsafe void glMultiTexCoordP4uiv(int texture, int type, UInt32* coords);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultMatrixd", ExactSpelling = true)]
			internal extern static unsafe void glMultMatrixd(double* m);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultMatrixf", ExactSpelling = true)]
			internal extern static unsafe void glMultMatrixf(float* m);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultTransposeMatrixd", ExactSpelling = true)]
			internal extern static unsafe void glMultTransposeMatrixd(double* m);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultTransposeMatrixf", ExactSpelling = true)]
			internal extern static unsafe void glMultTransposeMatrixf(float* m);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glNewList", ExactSpelling = true)]
			internal extern static void glNewList(UInt32 list, int mode);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glNormal3b", ExactSpelling = true)]
			internal extern static void glNormal3b(sbyte nx, sbyte ny, sbyte nz);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glNormal3bv", ExactSpelling = true)]
			internal extern static unsafe void glNormal3bv(sbyte* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glNormal3d", ExactSpelling = true)]
			internal extern static void glNormal3d(double nx, double ny, double nz);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glNormal3dv", ExactSpelling = true)]
			internal extern static unsafe void glNormal3dv(double* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glNormal3f", ExactSpelling = true)]
			internal extern static void glNormal3f(float nx, float ny, float nz);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glNormal3fv", ExactSpelling = true)]
			internal extern static unsafe void glNormal3fv(float* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glNormal3i", ExactSpelling = true)]
			internal extern static void glNormal3i(int nx, int ny, int nz);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glNormal3iv", ExactSpelling = true)]
			internal extern static unsafe void glNormal3iv(int* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glNormal3s", ExactSpelling = true)]
			internal extern static void glNormal3s(Int16 nx, Int16 ny, Int16 nz);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glNormal3sv", ExactSpelling = true)]
			internal extern static unsafe void glNormal3sv(Int16* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glNormalP3ui", ExactSpelling = true)]
			internal extern static void glNormalP3ui(int type, UInt32 coords);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glNormalP3uiv", ExactSpelling = true)]
			internal extern static unsafe void glNormalP3uiv(int type, UInt32* coords);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glNormalPointer", ExactSpelling = true)]
			internal extern static void glNormalPointer(int type, Int32 stride, IntPtr pointer);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glOrtho", ExactSpelling = true)]
			internal extern static void glOrtho(double left, double right, double bottom, double top, double zNear, double zFar);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glPassThrough", ExactSpelling = true)]
			internal extern static void glPassThrough(float token);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glPatchParameterfv", ExactSpelling = true)]
			internal extern static unsafe void glPatchParameterfv(int pname, float* values);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glPatchParameteri", ExactSpelling = true)]
			internal extern static void glPatchParameteri(int pname, int value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glPauseTransformFeedback", ExactSpelling = true)]
			internal extern static void glPauseTransformFeedback();

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glPixelMapfv", ExactSpelling = true)]
			internal extern static unsafe void glPixelMapfv(int map, int mapsize, float* values);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glPixelMapuiv", ExactSpelling = true)]
			internal extern static unsafe void glPixelMapuiv(int map, int mapsize, UInt32* values);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glPixelMapusv", ExactSpelling = true)]
			internal extern static unsafe void glPixelMapusv(int map, int mapsize, UInt16* values);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glPixelStoref", ExactSpelling = true)]
			internal extern static void glPixelStoref(int pname, float param);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glPixelStorei", ExactSpelling = true)]
			internal extern static void glPixelStorei(int pname, int param);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glPixelTransferf", ExactSpelling = true)]
			internal extern static void glPixelTransferf(int pname, float param);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glPixelTransferi", ExactSpelling = true)]
			internal extern static void glPixelTransferi(int pname, int param);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glPixelZoom", ExactSpelling = true)]
			internal extern static void glPixelZoom(float xfactor, float yfactor);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glPointParameterf", ExactSpelling = true)]
			internal extern static void glPointParameterf(int pname, float param);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glPointParameterfv", ExactSpelling = true)]
			internal extern static unsafe void glPointParameterfv(int pname, float* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glPointParameteri", ExactSpelling = true)]
			internal extern static void glPointParameteri(int pname, int param);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glPointParameteriv", ExactSpelling = true)]
			internal extern static unsafe void glPointParameteriv(int pname, int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glPointSize", ExactSpelling = true)]
			internal extern static void glPointSize(float size);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glPolygonMode", ExactSpelling = true)]
			internal extern static void glPolygonMode(int face, int mode);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glPolygonOffset", ExactSpelling = true)]
			internal extern static void glPolygonOffset(float factor, float units);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glPolygonStipple", ExactSpelling = true)]
			internal extern static unsafe void glPolygonStipple(byte* mask);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glPopAttrib", ExactSpelling = true)]
			internal extern static void glPopAttrib();

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glPopClientAttrib", ExactSpelling = true)]
			internal extern static void glPopClientAttrib();

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glPopMatrix", ExactSpelling = true)]
			internal extern static void glPopMatrix();

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glPopName", ExactSpelling = true)]
			internal extern static void glPopName();

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glPrimitiveRestartIndex", ExactSpelling = true)]
			internal extern static void glPrimitiveRestartIndex(UInt32 index);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glPrioritizeTextures", ExactSpelling = true)]
			internal extern static unsafe void glPrioritizeTextures(Int32 n, UInt32* textures, float* priorities);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramBinary", ExactSpelling = true)]
			internal extern static void glProgramBinary(UInt32 program, int binaryFormat, IntPtr binary, Int32 length);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramParameteri", ExactSpelling = true)]
			internal extern static void glProgramParameteri(UInt32 program, int pname, int value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniform1d", ExactSpelling = true)]
			internal extern static void glProgramUniform1d(UInt32 program, int location, double v0);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniform1dv", ExactSpelling = true)]
			internal extern static unsafe void glProgramUniform1dv(UInt32 program, int location, Int32 count, double* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniform1f", ExactSpelling = true)]
			internal extern static void glProgramUniform1f(UInt32 program, int location, float v0);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniform1fv", ExactSpelling = true)]
			internal extern static unsafe void glProgramUniform1fv(UInt32 program, int location, Int32 count, float* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniform1i", ExactSpelling = true)]
			internal extern static void glProgramUniform1i(UInt32 program, int location, int v0);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniform1iv", ExactSpelling = true)]
			internal extern static unsafe void glProgramUniform1iv(UInt32 program, int location, Int32 count, int* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniform1ui", ExactSpelling = true)]
			internal extern static void glProgramUniform1ui(UInt32 program, int location, UInt32 v0);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniform1uiv", ExactSpelling = true)]
			internal extern static unsafe void glProgramUniform1uiv(UInt32 program, int location, Int32 count, UInt32* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniform2d", ExactSpelling = true)]
			internal extern static void glProgramUniform2d(UInt32 program, int location, double v0, double v1);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniform2dv", ExactSpelling = true)]
			internal extern static unsafe void glProgramUniform2dv(UInt32 program, int location, Int32 count, double* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniform2f", ExactSpelling = true)]
			internal extern static void glProgramUniform2f(UInt32 program, int location, float v0, float v1);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniform2fv", ExactSpelling = true)]
			internal extern static unsafe void glProgramUniform2fv(UInt32 program, int location, Int32 count, float* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniform2i", ExactSpelling = true)]
			internal extern static void glProgramUniform2i(UInt32 program, int location, int v0, int v1);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniform2iv", ExactSpelling = true)]
			internal extern static unsafe void glProgramUniform2iv(UInt32 program, int location, Int32 count, int* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniform2ui", ExactSpelling = true)]
			internal extern static void glProgramUniform2ui(UInt32 program, int location, UInt32 v0, UInt32 v1);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniform2uiv", ExactSpelling = true)]
			internal extern static unsafe void glProgramUniform2uiv(UInt32 program, int location, Int32 count, UInt32* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniform3d", ExactSpelling = true)]
			internal extern static void glProgramUniform3d(UInt32 program, int location, double v0, double v1, double v2);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniform3dv", ExactSpelling = true)]
			internal extern static unsafe void glProgramUniform3dv(UInt32 program, int location, Int32 count, double* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniform3f", ExactSpelling = true)]
			internal extern static void glProgramUniform3f(UInt32 program, int location, float v0, float v1, float v2);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniform3fv", ExactSpelling = true)]
			internal extern static unsafe void glProgramUniform3fv(UInt32 program, int location, Int32 count, float* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniform3i", ExactSpelling = true)]
			internal extern static void glProgramUniform3i(UInt32 program, int location, int v0, int v1, int v2);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniform3iv", ExactSpelling = true)]
			internal extern static unsafe void glProgramUniform3iv(UInt32 program, int location, Int32 count, int* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniform3ui", ExactSpelling = true)]
			internal extern static void glProgramUniform3ui(UInt32 program, int location, UInt32 v0, UInt32 v1, UInt32 v2);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniform3uiv", ExactSpelling = true)]
			internal extern static unsafe void glProgramUniform3uiv(UInt32 program, int location, Int32 count, UInt32* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniform4d", ExactSpelling = true)]
			internal extern static void glProgramUniform4d(UInt32 program, int location, double v0, double v1, double v2, double v3);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniform4dv", ExactSpelling = true)]
			internal extern static unsafe void glProgramUniform4dv(UInt32 program, int location, Int32 count, double* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniform4f", ExactSpelling = true)]
			internal extern static void glProgramUniform4f(UInt32 program, int location, float v0, float v1, float v2, float v3);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniform4fv", ExactSpelling = true)]
			internal extern static unsafe void glProgramUniform4fv(UInt32 program, int location, Int32 count, float* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniform4i", ExactSpelling = true)]
			internal extern static void glProgramUniform4i(UInt32 program, int location, int v0, int v1, int v2, int v3);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniform4iv", ExactSpelling = true)]
			internal extern static unsafe void glProgramUniform4iv(UInt32 program, int location, Int32 count, int* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniform4ui", ExactSpelling = true)]
			internal extern static void glProgramUniform4ui(UInt32 program, int location, UInt32 v0, UInt32 v1, UInt32 v2, UInt32 v3);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniform4uiv", ExactSpelling = true)]
			internal extern static unsafe void glProgramUniform4uiv(UInt32 program, int location, Int32 count, UInt32* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniformMatrix2dv", ExactSpelling = true)]
			internal extern static unsafe void glProgramUniformMatrix2dv(UInt32 program, int location, Int32 count, bool transpose, double* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniformMatrix2fv", ExactSpelling = true)]
			internal extern static unsafe void glProgramUniformMatrix2fv(UInt32 program, int location, Int32 count, bool transpose, float* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniformMatrix2x3dv", ExactSpelling = true)]
			internal extern static unsafe void glProgramUniformMatrix2x3dv(UInt32 program, int location, Int32 count, bool transpose, double* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniformMatrix2x3fv", ExactSpelling = true)]
			internal extern static unsafe void glProgramUniformMatrix2x3fv(UInt32 program, int location, Int32 count, bool transpose, float* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniformMatrix2x4dv", ExactSpelling = true)]
			internal extern static unsafe void glProgramUniformMatrix2x4dv(UInt32 program, int location, Int32 count, bool transpose, double* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniformMatrix2x4fv", ExactSpelling = true)]
			internal extern static unsafe void glProgramUniformMatrix2x4fv(UInt32 program, int location, Int32 count, bool transpose, float* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniformMatrix3dv", ExactSpelling = true)]
			internal extern static unsafe void glProgramUniformMatrix3dv(UInt32 program, int location, Int32 count, bool transpose, double* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniformMatrix3fv", ExactSpelling = true)]
			internal extern static unsafe void glProgramUniformMatrix3fv(UInt32 program, int location, Int32 count, bool transpose, float* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniformMatrix3x2dv", ExactSpelling = true)]
			internal extern static unsafe void glProgramUniformMatrix3x2dv(UInt32 program, int location, Int32 count, bool transpose, double* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniformMatrix3x2fv", ExactSpelling = true)]
			internal extern static unsafe void glProgramUniformMatrix3x2fv(UInt32 program, int location, Int32 count, bool transpose, float* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniformMatrix3x4dv", ExactSpelling = true)]
			internal extern static unsafe void glProgramUniformMatrix3x4dv(UInt32 program, int location, Int32 count, bool transpose, double* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniformMatrix3x4fv", ExactSpelling = true)]
			internal extern static unsafe void glProgramUniformMatrix3x4fv(UInt32 program, int location, Int32 count, bool transpose, float* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniformMatrix4dv", ExactSpelling = true)]
			internal extern static unsafe void glProgramUniformMatrix4dv(UInt32 program, int location, Int32 count, bool transpose, double* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniformMatrix4fv", ExactSpelling = true)]
			internal extern static unsafe void glProgramUniformMatrix4fv(UInt32 program, int location, Int32 count, bool transpose, float* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniformMatrix4x2dv", ExactSpelling = true)]
			internal extern static unsafe void glProgramUniformMatrix4x2dv(UInt32 program, int location, Int32 count, bool transpose, double* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniformMatrix4x2fv", ExactSpelling = true)]
			internal extern static unsafe void glProgramUniformMatrix4x2fv(UInt32 program, int location, Int32 count, bool transpose, float* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniformMatrix4x3dv", ExactSpelling = true)]
			internal extern static unsafe void glProgramUniformMatrix4x3dv(UInt32 program, int location, Int32 count, bool transpose, double* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramUniformMatrix4x3fv", ExactSpelling = true)]
			internal extern static unsafe void glProgramUniformMatrix4x3fv(UInt32 program, int location, Int32 count, bool transpose, float* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProvokingVertex", ExactSpelling = true)]
			internal extern static void glProvokingVertex(int mode);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glPushAttrib", ExactSpelling = true)]
			internal extern static void glPushAttrib(uint mask);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glPushClientAttrib", ExactSpelling = true)]
			internal extern static void glPushClientAttrib(uint mask);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glPushMatrix", ExactSpelling = true)]
			internal extern static void glPushMatrix();

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glPushName", ExactSpelling = true)]
			internal extern static void glPushName(UInt32 name);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glQueryCounter", ExactSpelling = true)]
			internal extern static void glQueryCounter(UInt32 id, int target);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glRasterPos2d", ExactSpelling = true)]
			internal extern static void glRasterPos2d(double x, double y);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glRasterPos2dv", ExactSpelling = true)]
			internal extern static unsafe void glRasterPos2dv(double* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glRasterPos2f", ExactSpelling = true)]
			internal extern static void glRasterPos2f(float x, float y);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glRasterPos2fv", ExactSpelling = true)]
			internal extern static unsafe void glRasterPos2fv(float* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glRasterPos2i", ExactSpelling = true)]
			internal extern static void glRasterPos2i(int x, int y);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glRasterPos2iv", ExactSpelling = true)]
			internal extern static unsafe void glRasterPos2iv(int* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glRasterPos2s", ExactSpelling = true)]
			internal extern static void glRasterPos2s(Int16 x, Int16 y);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glRasterPos2sv", ExactSpelling = true)]
			internal extern static unsafe void glRasterPos2sv(Int16* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glRasterPos3d", ExactSpelling = true)]
			internal extern static void glRasterPos3d(double x, double y, double z);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glRasterPos3dv", ExactSpelling = true)]
			internal extern static unsafe void glRasterPos3dv(double* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glRasterPos3f", ExactSpelling = true)]
			internal extern static void glRasterPos3f(float x, float y, float z);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glRasterPos3fv", ExactSpelling = true)]
			internal extern static unsafe void glRasterPos3fv(float* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glRasterPos3i", ExactSpelling = true)]
			internal extern static void glRasterPos3i(int x, int y, int z);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glRasterPos3iv", ExactSpelling = true)]
			internal extern static unsafe void glRasterPos3iv(int* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glRasterPos3s", ExactSpelling = true)]
			internal extern static void glRasterPos3s(Int16 x, Int16 y, Int16 z);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glRasterPos3sv", ExactSpelling = true)]
			internal extern static unsafe void glRasterPos3sv(Int16* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glRasterPos4d", ExactSpelling = true)]
			internal extern static void glRasterPos4d(double x, double y, double z, double w);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glRasterPos4dv", ExactSpelling = true)]
			internal extern static unsafe void glRasterPos4dv(double* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glRasterPos4f", ExactSpelling = true)]
			internal extern static void glRasterPos4f(float x, float y, float z, float w);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glRasterPos4fv", ExactSpelling = true)]
			internal extern static unsafe void glRasterPos4fv(float* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glRasterPos4i", ExactSpelling = true)]
			internal extern static void glRasterPos4i(int x, int y, int z, int w);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glRasterPos4iv", ExactSpelling = true)]
			internal extern static unsafe void glRasterPos4iv(int* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glRasterPos4s", ExactSpelling = true)]
			internal extern static void glRasterPos4s(Int16 x, Int16 y, Int16 z, Int16 w);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glRasterPos4sv", ExactSpelling = true)]
			internal extern static unsafe void glRasterPos4sv(Int16* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glReadBuffer", ExactSpelling = true)]
			internal extern static void glReadBuffer(int mode);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glReadPixels", ExactSpelling = true)]
			internal extern static void glReadPixels(int x, int y, Int32 width, Int32 height, int format, int type, [Out]IntPtr pixels);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glRectd", ExactSpelling = true)]
			internal extern static void glRectd(double x1, double y1, double x2, double y2);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glRectdv", ExactSpelling = true)]
			internal extern static unsafe void glRectdv(double* v1, double* v2);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glRectf", ExactSpelling = true)]
			internal extern static void glRectf(float x1, float y1, float x2, float y2);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glRectfv", ExactSpelling = true)]
			internal extern static unsafe void glRectfv(float* v1, float* v2);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glRecti", ExactSpelling = true)]
			internal extern static void glRecti(int x1, int y1, int x2, int y2);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glRectiv", ExactSpelling = true)]
			internal extern static unsafe void glRectiv(int* v1, int* v2);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glRects", ExactSpelling = true)]
			internal extern static void glRects(Int16 x1, Int16 y1, Int16 x2, Int16 y2);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glRectsv", ExactSpelling = true)]
			internal extern static unsafe void glRectsv(Int16* v1, Int16* v2);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glReleaseShaderCompiler", ExactSpelling = true)]
			internal extern static void glReleaseShaderCompiler();

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glRenderbufferStorage", ExactSpelling = true)]
			internal extern static void glRenderbufferStorage(int target, int internalformat, Int32 width, Int32 height);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glRenderbufferStorageMultisample", ExactSpelling = true)]
			internal extern static void glRenderbufferStorageMultisample(int target, Int32 samples, int internalformat, Int32 width, Int32 height);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glRenderMode", ExactSpelling = true)]
			internal extern static int glRenderMode(int mode);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glResetHistogram", ExactSpelling = true)]
			internal extern static void glResetHistogram(int target);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glResetMinmax", ExactSpelling = true)]
			internal extern static void glResetMinmax(int target);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glResumeTransformFeedback", ExactSpelling = true)]
			internal extern static void glResumeTransformFeedback();

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glRotated", ExactSpelling = true)]
			internal extern static void glRotated(double angle, double x, double y, double z);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glRotatef", ExactSpelling = true)]
			internal extern static void glRotatef(float angle, float x, float y, float z);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glSampleCoverage", ExactSpelling = true)]
			internal extern static void glSampleCoverage(float value, bool invert);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glSampleMaski", ExactSpelling = true)]
			internal extern static void glSampleMaski(UInt32 index, uint mask);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glSamplerParameterf", ExactSpelling = true)]
			internal extern static void glSamplerParameterf(UInt32 sampler, int pname, float param);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glSamplerParameterfv", ExactSpelling = true)]
			internal extern static unsafe void glSamplerParameterfv(UInt32 sampler, int pname, float* param);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glSamplerParameteri", ExactSpelling = true)]
			internal extern static void glSamplerParameteri(UInt32 sampler, int pname, int param);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glSamplerParameterIiv", ExactSpelling = true)]
			internal extern static unsafe void glSamplerParameterIiv(UInt32 sampler, int pname, int* param);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glSamplerParameterIuiv", ExactSpelling = true)]
			internal extern static unsafe void glSamplerParameterIuiv(UInt32 sampler, int pname, UInt32* param);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glSamplerParameteriv", ExactSpelling = true)]
			internal extern static unsafe void glSamplerParameteriv(UInt32 sampler, int pname, int* param);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glScaled", ExactSpelling = true)]
			internal extern static void glScaled(double x, double y, double z);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glScalef", ExactSpelling = true)]
			internal extern static void glScalef(float x, float y, float z);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glScissor", ExactSpelling = true)]
			internal extern static void glScissor(int x, int y, Int32 width, Int32 height);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glScissorArrayv", ExactSpelling = true)]
			internal extern static unsafe void glScissorArrayv(UInt32 first, Int32 count, int* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glScissorIndexed", ExactSpelling = true)]
			internal extern static void glScissorIndexed(UInt32 index, int left, int bottom, Int32 width, Int32 height);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glScissorIndexedv", ExactSpelling = true)]
			internal extern static unsafe void glScissorIndexedv(UInt32 index, int* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glSecondaryColor3b", ExactSpelling = true)]
			internal extern static void glSecondaryColor3b(sbyte red, sbyte green, sbyte blue);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glSecondaryColor3bv", ExactSpelling = true)]
			internal extern static unsafe void glSecondaryColor3bv(sbyte* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glSecondaryColor3d", ExactSpelling = true)]
			internal extern static void glSecondaryColor3d(double red, double green, double blue);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glSecondaryColor3dv", ExactSpelling = true)]
			internal extern static unsafe void glSecondaryColor3dv(double* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glSecondaryColor3f", ExactSpelling = true)]
			internal extern static void glSecondaryColor3f(float red, float green, float blue);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glSecondaryColor3fv", ExactSpelling = true)]
			internal extern static unsafe void glSecondaryColor3fv(float* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glSecondaryColor3i", ExactSpelling = true)]
			internal extern static void glSecondaryColor3i(int red, int green, int blue);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glSecondaryColor3iv", ExactSpelling = true)]
			internal extern static unsafe void glSecondaryColor3iv(int* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glSecondaryColor3s", ExactSpelling = true)]
			internal extern static void glSecondaryColor3s(Int16 red, Int16 green, Int16 blue);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glSecondaryColor3sv", ExactSpelling = true)]
			internal extern static unsafe void glSecondaryColor3sv(Int16* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glSecondaryColor3ub", ExactSpelling = true)]
			internal extern static void glSecondaryColor3ub(byte red, byte green, byte blue);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glSecondaryColor3ubv", ExactSpelling = true)]
			internal extern static unsafe void glSecondaryColor3ubv(byte* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glSecondaryColor3ui", ExactSpelling = true)]
			internal extern static void glSecondaryColor3ui(UInt32 red, UInt32 green, UInt32 blue);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glSecondaryColor3uiv", ExactSpelling = true)]
			internal extern static unsafe void glSecondaryColor3uiv(UInt32* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glSecondaryColor3us", ExactSpelling = true)]
			internal extern static void glSecondaryColor3us(UInt16 red, UInt16 green, UInt16 blue);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glSecondaryColor3usv", ExactSpelling = true)]
			internal extern static unsafe void glSecondaryColor3usv(UInt16* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glSecondaryColorP3ui", ExactSpelling = true)]
			internal extern static void glSecondaryColorP3ui(int type, UInt32 color);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glSecondaryColorP3uiv", ExactSpelling = true)]
			internal extern static unsafe void glSecondaryColorP3uiv(int type, UInt32* color);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glSecondaryColorPointer", ExactSpelling = true)]
			internal extern static void glSecondaryColorPointer(int size, int type, Int32 stride, IntPtr pointer);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glSelectBuffer", ExactSpelling = true)]
			internal extern static unsafe void glSelectBuffer(Int32 size, [Out]UInt32* buffer);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glSeparableFilter2D", ExactSpelling = true)]
			internal extern static void glSeparableFilter2D(int target, int internalformat, Int32 width, Int32 height, int format, int type, IntPtr row, IntPtr column);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glShadeModel", ExactSpelling = true)]
			internal extern static void glShadeModel(int mode);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glShaderBinary", ExactSpelling = true)]
			internal extern static unsafe void glShaderBinary(Int32 count, UInt32* shaders, int binaryformat, IntPtr binary, Int32 length);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glShaderSource", ExactSpelling = true)]
			internal extern static unsafe void glShaderSource(UInt32 shader, Int32 count, string[] @string, int* length);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glStencilFunc", ExactSpelling = true)]
			internal extern static void glStencilFunc(int func, int @ref, UInt32 mask);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glStencilFuncSeparate", ExactSpelling = true)]
			internal extern static void glStencilFuncSeparate(int face, int func, int @ref, UInt32 mask);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glStencilMask", ExactSpelling = true)]
			internal extern static void glStencilMask(UInt32 mask);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glStencilMaskSeparate", ExactSpelling = true)]
			internal extern static void glStencilMaskSeparate(int face, UInt32 mask);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glStencilOp", ExactSpelling = true)]
			internal extern static void glStencilOp(int fail, int zfail, int zpass);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glStencilOpSeparate", ExactSpelling = true)]
			internal extern static void glStencilOpSeparate(int face, int sfail, int dpfail, int dppass);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexBuffer", ExactSpelling = true)]
			internal extern static void glTexBuffer(int target, int internalformat, UInt32 buffer);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexCoord1d", ExactSpelling = true)]
			internal extern static void glTexCoord1d(double s);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexCoord1dv", ExactSpelling = true)]
			internal extern static unsafe void glTexCoord1dv(double* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexCoord1f", ExactSpelling = true)]
			internal extern static void glTexCoord1f(float s);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexCoord1fv", ExactSpelling = true)]
			internal extern static unsafe void glTexCoord1fv(float* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexCoord1i", ExactSpelling = true)]
			internal extern static void glTexCoord1i(int s);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexCoord1iv", ExactSpelling = true)]
			internal extern static unsafe void glTexCoord1iv(int* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexCoord1s", ExactSpelling = true)]
			internal extern static void glTexCoord1s(Int16 s);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexCoord1sv", ExactSpelling = true)]
			internal extern static unsafe void glTexCoord1sv(Int16* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexCoord2d", ExactSpelling = true)]
			internal extern static void glTexCoord2d(double s, double t);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexCoord2dv", ExactSpelling = true)]
			internal extern static unsafe void glTexCoord2dv(double* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexCoord2f", ExactSpelling = true)]
			internal extern static void glTexCoord2f(float s, float t);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexCoord2fv", ExactSpelling = true)]
			internal extern static unsafe void glTexCoord2fv(float* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexCoord2i", ExactSpelling = true)]
			internal extern static void glTexCoord2i(int s, int t);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexCoord2iv", ExactSpelling = true)]
			internal extern static unsafe void glTexCoord2iv(int* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexCoord2s", ExactSpelling = true)]
			internal extern static void glTexCoord2s(Int16 s, Int16 t);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexCoord2sv", ExactSpelling = true)]
			internal extern static unsafe void glTexCoord2sv(Int16* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexCoord3d", ExactSpelling = true)]
			internal extern static void glTexCoord3d(double s, double t, double r);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexCoord3dv", ExactSpelling = true)]
			internal extern static unsafe void glTexCoord3dv(double* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexCoord3f", ExactSpelling = true)]
			internal extern static void glTexCoord3f(float s, float t, float r);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexCoord3fv", ExactSpelling = true)]
			internal extern static unsafe void glTexCoord3fv(float* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexCoord3i", ExactSpelling = true)]
			internal extern static void glTexCoord3i(int s, int t, int r);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexCoord3iv", ExactSpelling = true)]
			internal extern static unsafe void glTexCoord3iv(int* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexCoord3s", ExactSpelling = true)]
			internal extern static void glTexCoord3s(Int16 s, Int16 t, Int16 r);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexCoord3sv", ExactSpelling = true)]
			internal extern static unsafe void glTexCoord3sv(Int16* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexCoord4d", ExactSpelling = true)]
			internal extern static void glTexCoord4d(double s, double t, double r, double q);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexCoord4dv", ExactSpelling = true)]
			internal extern static unsafe void glTexCoord4dv(double* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexCoord4f", ExactSpelling = true)]
			internal extern static void glTexCoord4f(float s, float t, float r, float q);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexCoord4fv", ExactSpelling = true)]
			internal extern static unsafe void glTexCoord4fv(float* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexCoord4i", ExactSpelling = true)]
			internal extern static void glTexCoord4i(int s, int t, int r, int q);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexCoord4iv", ExactSpelling = true)]
			internal extern static unsafe void glTexCoord4iv(int* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexCoord4s", ExactSpelling = true)]
			internal extern static void glTexCoord4s(Int16 s, Int16 t, Int16 r, Int16 q);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexCoord4sv", ExactSpelling = true)]
			internal extern static unsafe void glTexCoord4sv(Int16* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexCoordP1ui", ExactSpelling = true)]
			internal extern static void glTexCoordP1ui(int type, UInt32 coords);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexCoordP1uiv", ExactSpelling = true)]
			internal extern static unsafe void glTexCoordP1uiv(int type, UInt32* coords);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexCoordP2ui", ExactSpelling = true)]
			internal extern static void glTexCoordP2ui(int type, UInt32 coords);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexCoordP2uiv", ExactSpelling = true)]
			internal extern static unsafe void glTexCoordP2uiv(int type, UInt32* coords);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexCoordP3ui", ExactSpelling = true)]
			internal extern static void glTexCoordP3ui(int type, UInt32 coords);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexCoordP3uiv", ExactSpelling = true)]
			internal extern static unsafe void glTexCoordP3uiv(int type, UInt32* coords);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexCoordP4ui", ExactSpelling = true)]
			internal extern static void glTexCoordP4ui(int type, UInt32 coords);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexCoordP4uiv", ExactSpelling = true)]
			internal extern static unsafe void glTexCoordP4uiv(int type, UInt32* coords);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexCoordPointer", ExactSpelling = true)]
			internal extern static void glTexCoordPointer(int size, int type, Int32 stride, IntPtr pointer);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexEnvf", ExactSpelling = true)]
			internal extern static void glTexEnvf(int target, int pname, float param);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexEnvfv", ExactSpelling = true)]
			internal extern static unsafe void glTexEnvfv(int target, int pname, float* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexEnvi", ExactSpelling = true)]
			internal extern static void glTexEnvi(int target, int pname, int param);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexEnviv", ExactSpelling = true)]
			internal extern static unsafe void glTexEnviv(int target, int pname, int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexGend", ExactSpelling = true)]
			internal extern static void glTexGend(int coord, int pname, double param);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexGendv", ExactSpelling = true)]
			internal extern static unsafe void glTexGendv(int coord, int pname, double* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexGenf", ExactSpelling = true)]
			internal extern static void glTexGenf(int coord, int pname, float param);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexGenfv", ExactSpelling = true)]
			internal extern static unsafe void glTexGenfv(int coord, int pname, float* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexGeni", ExactSpelling = true)]
			internal extern static void glTexGeni(int coord, int pname, int param);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexGeniv", ExactSpelling = true)]
			internal extern static unsafe void glTexGeniv(int coord, int pname, int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexImage1D", ExactSpelling = true)]
			internal extern static void glTexImage1D(int target, int level, int internalformat, Int32 width, int border, int format, int type, IntPtr pixels);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexImage2D", ExactSpelling = true)]
			internal extern static void glTexImage2D(int target, int level, int internalformat, Int32 width, Int32 height, int border, int format, int type, IntPtr pixels);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexImage2DMultisample", ExactSpelling = true)]
			internal extern static void glTexImage2DMultisample(int target, Int32 samples, int internalformat, Int32 width, Int32 height, bool fixedsamplelocations);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexImage3D", ExactSpelling = true)]
			internal extern static void glTexImage3D(int target, int level, int internalformat, Int32 width, Int32 height, Int32 depth, int border, int format, int type, IntPtr pixels);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexImage3DMultisample", ExactSpelling = true)]
			internal extern static void glTexImage3DMultisample(int target, Int32 samples, int internalformat, Int32 width, Int32 height, Int32 depth, bool fixedsamplelocations);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexParameterf", ExactSpelling = true)]
			internal extern static void glTexParameterf(int target, int pname, float param);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexParameterfv", ExactSpelling = true)]
			internal extern static unsafe void glTexParameterfv(int target, int pname, float* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexParameteri", ExactSpelling = true)]
			internal extern static void glTexParameteri(int target, int pname, int param);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexParameterIiv", ExactSpelling = true)]
			internal extern static unsafe void glTexParameterIiv(int target, int pname, int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexParameterIuiv", ExactSpelling = true)]
			internal extern static unsafe void glTexParameterIuiv(int target, int pname, UInt32* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexParameteriv", ExactSpelling = true)]
			internal extern static unsafe void glTexParameteriv(int target, int pname, int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexStorage1D", ExactSpelling = true)]
			internal extern static void glTexStorage1D(int target, Int32 levels, int internalformat, Int32 width);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexStorage2D", ExactSpelling = true)]
			internal extern static void glTexStorage2D(int target, Int32 levels, int internalformat, Int32 width, Int32 height);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexStorage3D", ExactSpelling = true)]
			internal extern static void glTexStorage3D(int target, Int32 levels, int internalformat, Int32 width, Int32 height, Int32 depth);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexSubImage1D", ExactSpelling = true)]
			internal extern static void glTexSubImage1D(int target, int level, int xoffset, Int32 width, int format, int type, IntPtr pixels);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexSubImage2D", ExactSpelling = true)]
			internal extern static void glTexSubImage2D(int target, int level, int xoffset, int yoffset, Int32 width, Int32 height, int format, int type, IntPtr pixels);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexSubImage3D", ExactSpelling = true)]
			internal extern static void glTexSubImage3D(int target, int level, int xoffset, int yoffset, int zoffset, Int32 width, Int32 height, Int32 depth, int format, int type, IntPtr pixels);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTransformFeedbackVaryings", ExactSpelling = true)]
			internal extern static void glTransformFeedbackVaryings(UInt32 program, Int32 count, string[] varyings, int bufferMode);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTranslated", ExactSpelling = true)]
			internal extern static void glTranslated(double x, double y, double z);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTranslatef", ExactSpelling = true)]
			internal extern static void glTranslatef(float x, float y, float z);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniform1d", ExactSpelling = true)]
			internal extern static void glUniform1d(int location, double x);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniform1dv", ExactSpelling = true)]
			internal extern static unsafe void glUniform1dv(int location, Int32 count, double* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniform1f", ExactSpelling = true)]
			internal extern static void glUniform1f(int location, float v0);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniform1fv", ExactSpelling = true)]
			internal extern static unsafe void glUniform1fv(int location, Int32 count, float* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniform1i", ExactSpelling = true)]
			internal extern static void glUniform1i(int location, int v0);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniform1iv", ExactSpelling = true)]
			internal extern static unsafe void glUniform1iv(int location, Int32 count, int* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniform1ui", ExactSpelling = true)]
			internal extern static void glUniform1ui(int location, UInt32 v0);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniform1uiv", ExactSpelling = true)]
			internal extern static unsafe void glUniform1uiv(int location, Int32 count, UInt32* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniform2d", ExactSpelling = true)]
			internal extern static void glUniform2d(int location, double x, double y);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniform2dv", ExactSpelling = true)]
			internal extern static unsafe void glUniform2dv(int location, Int32 count, double* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniform2f", ExactSpelling = true)]
			internal extern static void glUniform2f(int location, float v0, float v1);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniform2fv", ExactSpelling = true)]
			internal extern static unsafe void glUniform2fv(int location, Int32 count, float* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniform2i", ExactSpelling = true)]
			internal extern static void glUniform2i(int location, int v0, int v1);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniform2iv", ExactSpelling = true)]
			internal extern static unsafe void glUniform2iv(int location, Int32 count, int* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniform2ui", ExactSpelling = true)]
			internal extern static void glUniform2ui(int location, UInt32 v0, UInt32 v1);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniform2uiv", ExactSpelling = true)]
			internal extern static unsafe void glUniform2uiv(int location, Int32 count, UInt32* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniform3d", ExactSpelling = true)]
			internal extern static void glUniform3d(int location, double x, double y, double z);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniform3dv", ExactSpelling = true)]
			internal extern static unsafe void glUniform3dv(int location, Int32 count, double* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniform3f", ExactSpelling = true)]
			internal extern static void glUniform3f(int location, float v0, float v1, float v2);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniform3fv", ExactSpelling = true)]
			internal extern static unsafe void glUniform3fv(int location, Int32 count, float* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniform3i", ExactSpelling = true)]
			internal extern static void glUniform3i(int location, int v0, int v1, int v2);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniform3iv", ExactSpelling = true)]
			internal extern static unsafe void glUniform3iv(int location, Int32 count, int* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniform3ui", ExactSpelling = true)]
			internal extern static void glUniform3ui(int location, UInt32 v0, UInt32 v1, UInt32 v2);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniform3uiv", ExactSpelling = true)]
			internal extern static unsafe void glUniform3uiv(int location, Int32 count, UInt32* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniform4d", ExactSpelling = true)]
			internal extern static void glUniform4d(int location, double x, double y, double z, double w);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniform4dv", ExactSpelling = true)]
			internal extern static unsafe void glUniform4dv(int location, Int32 count, double* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniform4f", ExactSpelling = true)]
			internal extern static void glUniform4f(int location, float v0, float v1, float v2, float v3);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniform4fv", ExactSpelling = true)]
			internal extern static unsafe void glUniform4fv(int location, Int32 count, float* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniform4i", ExactSpelling = true)]
			internal extern static void glUniform4i(int location, int v0, int v1, int v2, int v3);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniform4iv", ExactSpelling = true)]
			internal extern static unsafe void glUniform4iv(int location, Int32 count, int* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniform4ui", ExactSpelling = true)]
			internal extern static void glUniform4ui(int location, UInt32 v0, UInt32 v1, UInt32 v2, UInt32 v3);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniform4uiv", ExactSpelling = true)]
			internal extern static unsafe void glUniform4uiv(int location, Int32 count, UInt32* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniformBlockBinding", ExactSpelling = true)]
			internal extern static void glUniformBlockBinding(UInt32 program, UInt32 uniformBlockIndex, UInt32 uniformBlockBinding);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniformMatrix2dv", ExactSpelling = true)]
			internal extern static unsafe void glUniformMatrix2dv(int location, Int32 count, bool transpose, double* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniformMatrix2fv", ExactSpelling = true)]
			internal extern static unsafe void glUniformMatrix2fv(int location, Int32 count, bool transpose, float* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniformMatrix2x3dv", ExactSpelling = true)]
			internal extern static unsafe void glUniformMatrix2x3dv(int location, Int32 count, bool transpose, double* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniformMatrix2x3fv", ExactSpelling = true)]
			internal extern static unsafe void glUniformMatrix2x3fv(int location, Int32 count, bool transpose, float* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniformMatrix2x4dv", ExactSpelling = true)]
			internal extern static unsafe void glUniformMatrix2x4dv(int location, Int32 count, bool transpose, double* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniformMatrix2x4fv", ExactSpelling = true)]
			internal extern static unsafe void glUniformMatrix2x4fv(int location, Int32 count, bool transpose, float* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniformMatrix3dv", ExactSpelling = true)]
			internal extern static unsafe void glUniformMatrix3dv(int location, Int32 count, bool transpose, double* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniformMatrix3fv", ExactSpelling = true)]
			internal extern static unsafe void glUniformMatrix3fv(int location, Int32 count, bool transpose, float* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniformMatrix3x2dv", ExactSpelling = true)]
			internal extern static unsafe void glUniformMatrix3x2dv(int location, Int32 count, bool transpose, double* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniformMatrix3x2fv", ExactSpelling = true)]
			internal extern static unsafe void glUniformMatrix3x2fv(int location, Int32 count, bool transpose, float* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniformMatrix3x4dv", ExactSpelling = true)]
			internal extern static unsafe void glUniformMatrix3x4dv(int location, Int32 count, bool transpose, double* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniformMatrix3x4fv", ExactSpelling = true)]
			internal extern static unsafe void glUniformMatrix3x4fv(int location, Int32 count, bool transpose, float* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniformMatrix4dv", ExactSpelling = true)]
			internal extern static unsafe void glUniformMatrix4dv(int location, Int32 count, bool transpose, double* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniformMatrix4fv", ExactSpelling = true)]
			internal extern static unsafe void glUniformMatrix4fv(int location, Int32 count, bool transpose, float* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniformMatrix4x2dv", ExactSpelling = true)]
			internal extern static unsafe void glUniformMatrix4x2dv(int location, Int32 count, bool transpose, double* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniformMatrix4x2fv", ExactSpelling = true)]
			internal extern static unsafe void glUniformMatrix4x2fv(int location, Int32 count, bool transpose, float* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniformMatrix4x3dv", ExactSpelling = true)]
			internal extern static unsafe void glUniformMatrix4x3dv(int location, Int32 count, bool transpose, double* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniformMatrix4x3fv", ExactSpelling = true)]
			internal extern static unsafe void glUniformMatrix4x3fv(int location, Int32 count, bool transpose, float* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniformSubroutinesuiv", ExactSpelling = true)]
			internal extern static unsafe void glUniformSubroutinesuiv(int shadertype, Int32 count, UInt32* indices);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUnmapBuffer", ExactSpelling = true)]
			internal extern static bool glUnmapBuffer(int target);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUseProgram", ExactSpelling = true)]
			internal extern static void glUseProgram(UInt32 program);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUseProgramStages", ExactSpelling = true)]
			internal extern static void glUseProgramStages(UInt32 pipeline, uint stages, UInt32 program);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glValidateProgram", ExactSpelling = true)]
			internal extern static void glValidateProgram(UInt32 program);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glValidateProgramPipeline", ExactSpelling = true)]
			internal extern static void glValidateProgramPipeline(UInt32 pipeline);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertex2d", ExactSpelling = true)]
			internal extern static void glVertex2d(double x, double y);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertex2dv", ExactSpelling = true)]
			internal extern static unsafe void glVertex2dv(double* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertex2f", ExactSpelling = true)]
			internal extern static void glVertex2f(float x, float y);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertex2fv", ExactSpelling = true)]
			internal extern static unsafe void glVertex2fv(float* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertex2i", ExactSpelling = true)]
			internal extern static void glVertex2i(int x, int y);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertex2iv", ExactSpelling = true)]
			internal extern static unsafe void glVertex2iv(int* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertex2s", ExactSpelling = true)]
			internal extern static void glVertex2s(Int16 x, Int16 y);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertex2sv", ExactSpelling = true)]
			internal extern static unsafe void glVertex2sv(Int16* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertex3d", ExactSpelling = true)]
			internal extern static void glVertex3d(double x, double y, double z);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertex3dv", ExactSpelling = true)]
			internal extern static unsafe void glVertex3dv(double* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertex3f", ExactSpelling = true)]
			internal extern static void glVertex3f(float x, float y, float z);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertex3fv", ExactSpelling = true)]
			internal extern static unsafe void glVertex3fv(float* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertex3i", ExactSpelling = true)]
			internal extern static void glVertex3i(int x, int y, int z);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertex3iv", ExactSpelling = true)]
			internal extern static unsafe void glVertex3iv(int* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertex3s", ExactSpelling = true)]
			internal extern static void glVertex3s(Int16 x, Int16 y, Int16 z);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertex3sv", ExactSpelling = true)]
			internal extern static unsafe void glVertex3sv(Int16* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertex4d", ExactSpelling = true)]
			internal extern static void glVertex4d(double x, double y, double z, double w);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertex4dv", ExactSpelling = true)]
			internal extern static unsafe void glVertex4dv(double* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertex4f", ExactSpelling = true)]
			internal extern static void glVertex4f(float x, float y, float z, float w);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertex4fv", ExactSpelling = true)]
			internal extern static unsafe void glVertex4fv(float* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertex4i", ExactSpelling = true)]
			internal extern static void glVertex4i(int x, int y, int z, int w);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertex4iv", ExactSpelling = true)]
			internal extern static unsafe void glVertex4iv(int* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertex4s", ExactSpelling = true)]
			internal extern static void glVertex4s(Int16 x, Int16 y, Int16 z, Int16 w);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertex4sv", ExactSpelling = true)]
			internal extern static unsafe void glVertex4sv(Int16* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttrib1d", ExactSpelling = true)]
			internal extern static void glVertexAttrib1d(UInt32 index, double x);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttrib1dv", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttrib1dv(UInt32 index, double* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttrib1f", ExactSpelling = true)]
			internal extern static void glVertexAttrib1f(UInt32 index, float x);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttrib1fv", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttrib1fv(UInt32 index, float* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttrib1s", ExactSpelling = true)]
			internal extern static void glVertexAttrib1s(UInt32 index, Int16 x);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttrib1sv", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttrib1sv(UInt32 index, Int16* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttrib2d", ExactSpelling = true)]
			internal extern static void glVertexAttrib2d(UInt32 index, double x, double y);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttrib2dv", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttrib2dv(UInt32 index, double* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttrib2f", ExactSpelling = true)]
			internal extern static void glVertexAttrib2f(UInt32 index, float x, float y);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttrib2fv", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttrib2fv(UInt32 index, float* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttrib2s", ExactSpelling = true)]
			internal extern static void glVertexAttrib2s(UInt32 index, Int16 x, Int16 y);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttrib2sv", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttrib2sv(UInt32 index, Int16* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttrib3d", ExactSpelling = true)]
			internal extern static void glVertexAttrib3d(UInt32 index, double x, double y, double z);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttrib3dv", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttrib3dv(UInt32 index, double* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttrib3f", ExactSpelling = true)]
			internal extern static void glVertexAttrib3f(UInt32 index, float x, float y, float z);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttrib3fv", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttrib3fv(UInt32 index, float* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttrib3s", ExactSpelling = true)]
			internal extern static void glVertexAttrib3s(UInt32 index, Int16 x, Int16 y, Int16 z);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttrib3sv", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttrib3sv(UInt32 index, Int16* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttrib4bv", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttrib4bv(UInt32 index, sbyte* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttrib4d", ExactSpelling = true)]
			internal extern static void glVertexAttrib4d(UInt32 index, double x, double y, double z, double w);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttrib4dv", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttrib4dv(UInt32 index, double* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttrib4f", ExactSpelling = true)]
			internal extern static void glVertexAttrib4f(UInt32 index, float x, float y, float z, float w);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttrib4fv", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttrib4fv(UInt32 index, float* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttrib4iv", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttrib4iv(UInt32 index, int* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttrib4Nbv", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttrib4Nbv(UInt32 index, sbyte* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttrib4Niv", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttrib4Niv(UInt32 index, int* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttrib4Nsv", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttrib4Nsv(UInt32 index, Int16* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttrib4Nub", ExactSpelling = true)]
			internal extern static void glVertexAttrib4Nub(UInt32 index, byte x, byte y, byte z, byte w);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttrib4Nubv", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttrib4Nubv(UInt32 index, byte* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttrib4Nuiv", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttrib4Nuiv(UInt32 index, UInt32* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttrib4Nusv", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttrib4Nusv(UInt32 index, UInt16* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttrib4s", ExactSpelling = true)]
			internal extern static void glVertexAttrib4s(UInt32 index, Int16 x, Int16 y, Int16 z, Int16 w);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttrib4sv", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttrib4sv(UInt32 index, Int16* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttrib4ubv", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttrib4ubv(UInt32 index, byte* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttrib4uiv", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttrib4uiv(UInt32 index, UInt32* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttrib4usv", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttrib4usv(UInt32 index, UInt16* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttribDivisor", ExactSpelling = true)]
			internal extern static void glVertexAttribDivisor(UInt32 index, UInt32 divisor);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttribI1i", ExactSpelling = true)]
			internal extern static void glVertexAttribI1i(UInt32 index, int x);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttribI1iv", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttribI1iv(UInt32 index, int* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttribI1ui", ExactSpelling = true)]
			internal extern static void glVertexAttribI1ui(UInt32 index, UInt32 x);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttribI1uiv", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttribI1uiv(UInt32 index, UInt32* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttribI2i", ExactSpelling = true)]
			internal extern static void glVertexAttribI2i(UInt32 index, int x, int y);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttribI2iv", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttribI2iv(UInt32 index, int* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttribI2ui", ExactSpelling = true)]
			internal extern static void glVertexAttribI2ui(UInt32 index, UInt32 x, UInt32 y);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttribI2uiv", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttribI2uiv(UInt32 index, UInt32* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttribI3i", ExactSpelling = true)]
			internal extern static void glVertexAttribI3i(UInt32 index, int x, int y, int z);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttribI3iv", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttribI3iv(UInt32 index, int* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttribI3ui", ExactSpelling = true)]
			internal extern static void glVertexAttribI3ui(UInt32 index, UInt32 x, UInt32 y, UInt32 z);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttribI3uiv", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttribI3uiv(UInt32 index, UInt32* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttribI4bv", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttribI4bv(UInt32 index, sbyte* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttribI4i", ExactSpelling = true)]
			internal extern static void glVertexAttribI4i(UInt32 index, int x, int y, int z, int w);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttribI4iv", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttribI4iv(UInt32 index, int* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttribI4sv", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttribI4sv(UInt32 index, Int16* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttribI4ubv", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttribI4ubv(UInt32 index, byte* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttribI4ui", ExactSpelling = true)]
			internal extern static void glVertexAttribI4ui(UInt32 index, UInt32 x, UInt32 y, UInt32 z, UInt32 w);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttribI4uiv", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttribI4uiv(UInt32 index, UInt32* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttribI4usv", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttribI4usv(UInt32 index, UInt16* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttribIPointer", ExactSpelling = true)]
			internal extern static void glVertexAttribIPointer(UInt32 index, int size, int type, Int32 stride, IntPtr pointer);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttribL1d", ExactSpelling = true)]
			internal extern static void glVertexAttribL1d(UInt32 index, double x);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttribL1dv", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttribL1dv(UInt32 index, double* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttribL2d", ExactSpelling = true)]
			internal extern static void glVertexAttribL2d(UInt32 index, double x, double y);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttribL2dv", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttribL2dv(UInt32 index, double* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttribL3d", ExactSpelling = true)]
			internal extern static void glVertexAttribL3d(UInt32 index, double x, double y, double z);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttribL3dv", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttribL3dv(UInt32 index, double* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttribL4d", ExactSpelling = true)]
			internal extern static void glVertexAttribL4d(UInt32 index, double x, double y, double z, double w);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttribL4dv", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttribL4dv(UInt32 index, double* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttribLPointer", ExactSpelling = true)]
			internal extern static void glVertexAttribLPointer(UInt32 index, int size, int type, Int32 stride, IntPtr pointer);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttribP1ui", ExactSpelling = true)]
			internal extern static void glVertexAttribP1ui(UInt32 index, int type, bool normalized, UInt32 value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttribP1uiv", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttribP1uiv(UInt32 index, int type, bool normalized, UInt32* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttribP2ui", ExactSpelling = true)]
			internal extern static void glVertexAttribP2ui(UInt32 index, int type, bool normalized, UInt32 value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttribP2uiv", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttribP2uiv(UInt32 index, int type, bool normalized, UInt32* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttribP3ui", ExactSpelling = true)]
			internal extern static void glVertexAttribP3ui(UInt32 index, int type, bool normalized, UInt32 value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttribP3uiv", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttribP3uiv(UInt32 index, int type, bool normalized, UInt32* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttribP4ui", ExactSpelling = true)]
			internal extern static void glVertexAttribP4ui(UInt32 index, int type, bool normalized, UInt32 value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttribP4uiv", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttribP4uiv(UInt32 index, int type, bool normalized, UInt32* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttribPointer", ExactSpelling = true)]
			internal extern static void glVertexAttribPointer(UInt32 index, int size, int type, bool normalized, Int32 stride, IntPtr pointer);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexP2ui", ExactSpelling = true)]
			internal extern static void glVertexP2ui(int type, UInt32 value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexP2uiv", ExactSpelling = true)]
			internal extern static unsafe void glVertexP2uiv(int type, UInt32* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexP3ui", ExactSpelling = true)]
			internal extern static void glVertexP3ui(int type, UInt32 value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexP3uiv", ExactSpelling = true)]
			internal extern static unsafe void glVertexP3uiv(int type, UInt32* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexP4ui", ExactSpelling = true)]
			internal extern static void glVertexP4ui(int type, UInt32 value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexP4uiv", ExactSpelling = true)]
			internal extern static unsafe void glVertexP4uiv(int type, UInt32* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexPointer", ExactSpelling = true)]
			internal extern static void glVertexPointer(int size, int type, Int32 stride, IntPtr pointer);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glViewport", ExactSpelling = true)]
			internal extern static void glViewport(int x, int y, Int32 width, Int32 height);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glViewportArrayv", ExactSpelling = true)]
			internal extern static unsafe void glViewportArrayv(UInt32 first, Int32 count, float* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glViewportIndexedf", ExactSpelling = true)]
			internal extern static void glViewportIndexedf(UInt32 index, float x, float y, float w, float h);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glViewportIndexedfv", ExactSpelling = true)]
			internal extern static unsafe void glViewportIndexedfv(UInt32 index, float* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glWaitSync", ExactSpelling = true)]
			internal extern static void glWaitSync(int sync, uint flags, UInt64 timeout);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glWindowPos2d", ExactSpelling = true)]
			internal extern static void glWindowPos2d(double x, double y);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glWindowPos2dv", ExactSpelling = true)]
			internal extern static unsafe void glWindowPos2dv(double* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glWindowPos2f", ExactSpelling = true)]
			internal extern static void glWindowPos2f(float x, float y);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glWindowPos2fv", ExactSpelling = true)]
			internal extern static unsafe void glWindowPos2fv(float* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glWindowPos2i", ExactSpelling = true)]
			internal extern static void glWindowPos2i(int x, int y);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glWindowPos2iv", ExactSpelling = true)]
			internal extern static unsafe void glWindowPos2iv(int* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glWindowPos2s", ExactSpelling = true)]
			internal extern static void glWindowPos2s(Int16 x, Int16 y);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glWindowPos2sv", ExactSpelling = true)]
			internal extern static unsafe void glWindowPos2sv(Int16* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glWindowPos3d", ExactSpelling = true)]
			internal extern static void glWindowPos3d(double x, double y, double z);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glWindowPos3dv", ExactSpelling = true)]
			internal extern static unsafe void glWindowPos3dv(double* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glWindowPos3f", ExactSpelling = true)]
			internal extern static void glWindowPos3f(float x, float y, float z);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glWindowPos3fv", ExactSpelling = true)]
			internal extern static unsafe void glWindowPos3fv(float* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glWindowPos3i", ExactSpelling = true)]
			internal extern static void glWindowPos3i(int x, int y, int z);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glWindowPos3iv", ExactSpelling = true)]
			internal extern static unsafe void glWindowPos3iv(int* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glWindowPos3s", ExactSpelling = true)]
			internal extern static void glWindowPos3s(Int16 x, Int16 y, Int16 z);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glWindowPos3sv", ExactSpelling = true)]
			internal extern static unsafe void glWindowPos3sv(Int16* v);

		}

	}
}
